JavaScript-7数组

2020-09-03  本文已影响0人  想成为大牛的程旭元
数组注意点
  1. 和其它编程语言不同, 如果数组对应的索引中没有存储数据, 默认存储的就是undefined,其它编程语言中默认保存的是垃圾数据或者0
let arr = new Array(3);      //数组里有3个元素,都为undefined
console.log(arr[0]);  //undefined
console.log(arr[1]);  //undefined
console.log(arr[2]); //undefined
  1. 和其它编程语言不同, JavaScript中访问了数组中不存在的索引不会报错, 会返回undefined,其它编程语言一旦超出索引范围就会报错或者返回脏数据
let arr = new Array(3);  // 0 1 2
console.log(arr[666]);  打印的是undefined
  1. 和其它编程语言不同, 当JavaScript中数组的存储空间不够时数组会自动扩容,其它编程语言中数组的大小是固定的
let arr = new Array(3);
arr[0] = "lnj";
arr[1] = "lnj";
arr[2] = "lnj";
arr[3] = "it666";
console.log(arr[666]);  打印的是4个元素
  1. 和其它编程语言不同, JavaScript的数组可以存储不同类型数据,在其它编程语言中数组只能存储相同类型数据(要么全部都是字符串, 要么全部都是数值等)
let arr = new Array(4);
arr[0]= 123;
arr[1]= "456";
arr[2]= false;
arr[3]= undefined;
arr[4]= null;
console.log(arr);

输出:
0: 123
1: "456"
2: false
3: undefined
4: null
  1. 和其它编程语言不同, JavaScript中数组分配的存储空间不一定是连续的
  1. 创建数组的其他方式
6.1通过构造函数创建数组
let 变量名称 = new Array(size); 创建一个指定大小数组
let 变量名称 = new Array();     创建一个空数组
let 变量名称 = new Array(data1, data2, ...);     创建一个带数据的数组
6.2通过字面量创建数组
let 变量名称 = [];  创建一个空数组
let 变量名称 = [data1, data2, ...];  创建一个空数组
JavaScript数组解构赋值
  1. 什么是数组的解构赋值?
    解构赋值是ES6中新增的一种赋值方式
let arr = [1, 3, 5];
let a = arr[0];        // 1
let b = arr[1];        // 3
let c = arr[2];        // 5
  1. 数组解构赋值的注意点
let [a, b, c] = [1, 3, 5];
console.log("a = " + a);    1
console.log("b = " + b);    3
console.log("c = " + c);    5
let [a, b] = [1, 3, 5];
console.log("a = " + a);   1
console.log("b = " + b);   3

能拿到a和b的值
let [a, b, c] = [1];      右边只有1个,那么对于的a的值,b和c都没有对应的值
console.log("a = " + a);    1
console.log("b = " + b);    undefined
console.log("c = " + c);    undefined
let [a, b = 666, c = 888] = [1];
console.log("a = " + a);    1
console.log("b = " + b);    666
console.log("c = " + c);    888
let [a, b = 666] = [1, 3, 5];
console.log("a = " + a);   输出   1
console.log("b = " + b);   输出   3
let [a, b] = [1, 3, 5];
这样写,默认的把右边的5给拉下了,现在要求b把剩下的值都输出。
let [a,...b] = [1,3,5];
console.log("a = " + a);   输出   1
console.log(b);   输出   [3,5]  输出格式为一个数组,数组里面2个元素,分别为3,5

数组的增删改查

方法 描述
concat() 连接两个或更多的数组,并返回结果。
join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
pop() 删除并返回数组的最后一个元素
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
reverse() 颠倒数组中元素的顺序。
shift() 删除并返回数组的第一个元素
slice() 从某个已有的数组返回选定的元素
sort() 对数组的元素进行排序
splice() 删除元素,并向数组添加新元素。
toSource() 返回该对象的源代码。
toString() 把数组转换为字符串,并返回结果。
toLocaleString() 把数组转换为本地数组,并返回结果。
unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
valueOf() 返回数组对象的原始值

注意点

  1. 数组不能够使用加号进行拼接, 如果使用加号进行拼接会先转换成字符串再拼接
let arr1 = [1, 3, 5];
let arr2 = [2, 4, 6];
let res = arr1 + arr2;
let res = arr1.concat(arr2);
console.log(res);  1,3,52,4,6
console.log(typeof res);    string
  1. concat拼接数组时,不会影响原有的数组,会返回一个新的数组

数组函数

  1. concat 将两个数组拼接为一个数组
let arr = ["a", "b", "c"];
let res = arr.concat([1,2])
console.log(res);      输出["a", "b", "c", 1, 2]
  1. join 将数组转换成指定格式字符串

let arr = ["a", "b", "c"];
let res = arr.concat(',')
console.log(res);      输出a,b,c
  1. pop
let arr = ["a", "b", "c"];
let res = arr.pop()
console.log(res);      输出c
console.log(arr);      输出a、b
  1. push
let arr = ["a", "b", "c"];
let res = arr.push('1','2')
console.log(res);      输出5
console.log(arr);      输出["a", "b", "c", "d", "e"]
  1. splice
arrayObject.splice(index,howmany,item1,.....,itemX)
index:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany:必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX:可选。向数组添加的新项目。
let arr = ["a", "b", "c"];
//从index为1开始,0个元素,元素为1,2,3
arr.splice(1, 0,1,2,3);
console.log(res);      输出5,为数组的长度
console.log(arr);      输出 ["a", 1, 2, 3, "b", "c"]


//从index为1开始,1个元素,元素为1,2,3      删除原来数组中index从1开始,元素个数为1个,再从index为1开始,添加元素1,2,3
arr.splice(1, 1,1,2,3);   
console.log(res);      输出5,为数组的长度
console.log(arr);      输出["a", 1, 2, 3, "c"]
  1. 清空数组
let arr = [1, 2, 3, 4, 5];   
arr = [];                        第一种
arr.length = 0;                  第二种
arr.splice(0, arr.length)        第三种
  1. 如何将数组转换为字符串
let arr = [1, 2, 3, 4, 5];
let str = arr.toString();
console.log(str);     1, 2, 3, 4, 5   
console.log(typeof str);    string
  1. 生成一个新的数组-方式2,不是concat
let arr1 = [1, 3, 5];
let arr2 = [2, 4, 6];
let res = [...arr1, ...arr2]; 相当于 let res = [1, 3, 5, 2, 4, 6]; ...arr1,就相当于把arr1数组里面的元素都拿出来,然后放到新的数组里面
console.log(res);                [1, 3, 5, 2, 4, 6]
console.log(typeof res);      object

扩展运算符在解构赋值中(等号的左边)表示将剩余的数据打包成一个新的数组,扩展运算符在等号右边, 那么表示将数组中所有的数据解开, 放到所在的位置

let [a,b,...c] = [1,2,3,4]
console.log(c);        [3,4]

let arr1 = [1, 3, 5];
let arr2 = [2, 4, 6];
let res = [...arr1, ...arr2]; 相当于 let res = [1, 3, 5, 2, 4, 6];

console.log(res);      [1, 3, 5, 2, 4, 6]
console.log(typeof res);   object
  1. reverse 如何对数组中的内容进行反转
let arr1 = [1, 3, 5];
let res = arr.reverse();
console.log(res);    [5, 3, 1];
console.log(arr);     [5, 3, 1];
  1. slice 截取数组中指定范围内容
let arr = [1, 2, 3, 4, 5];
let res = arr.slice(1, 3)
console.log(res);     输出     [2,3]
console.log(arr);     输出  [1, 2, 3, 4, 5];
  1. indexOf查找元素在数组中的位置,2个参数(searchElement,fromIndex),参数1: 需要查找的元素,参数2: 从什么位置开始查找
let arr = [1, 2, 3, 4, 5, 3];
let res = arr.indexOf(3);
console.log(res);       2

let res = arr.indexOf(6);
console.log(res);       -1
  1. 如果一个数组里出现2个相同的元素,查找后面的那个元素的索引
    12.1 方式1,indexOf

let arr = [1, 2, 3, 4, 5, 3];
//参数1: 需要查找的元素
//参数2: 从什么位置开始查找
let res = arr.indexOf(3, 4);
console.log(res);        输出    5

12.2 方式2,lastIndexOf

let arr = [1, 2, 3, 4, 5, 3];
let res = arr.lastIndexOf(3);
console.log(res);        输出    5


let res = arr.lastIndexOf(3, 4);      查找3,从索引为4的位置开始
console.log(res);        输出    2  ,因为是从右往左查找,从4的位置作为开始,开始检索,这时候5的索引就为1了,那么3的位置就为2了
  1. 如何判断数组中是否包含某个元素
let arr = [1, 2, 3, 4, 5];
let res = arr.indexOf(8);
let res = arr.lastIndexOf(8);

上面2个都是-1
string.includes(searchvalue, start)

searchvalue:必需,要查找的字符串。
start:可选,设置从那个位置开始查找,默认为 0。
let arr = [1, 2, 3, 4, 5];
let res = arr.includes(8); 
console.log(res);        输出    false


let res = arr.includes(4); 
console.log(res);        输出    true
  1. fill() 把数组里面所有元素都设置成一个值
let arr = [1, 2, 3, 4, 5];
let res = arr.fill(8); 
console.log(res);        输出    都是8的数组

JavaScript二维数组
  1. 什么是二维数组?
  1. 如何操作二维数组?
    2.1 如何从二维数组中获取数据
    数组名称[二维数组索引]; 得到一个一维数组
    数组名称[二维数组索引][一维数组索引]; 得到一维数组中的元素
    2.2 如何往二维数组中存储数据
    数组名称[二维数组索引] = 一维数组;
    数组名称[二维数组索引][一维数组索引] = 值;

在定义二维数组的时候, 将来需要存储多少个一维数组, 就写上多少个[]即可

let arr = [[1,2,3],[2,3,4]];
let a = arr[0]
上一篇 下一篇

猜你喜欢

热点阅读