数组是什么
数组可以用一个变量名存储所有的值,并且可以用变量名访问任何一个值。
数组中的每个元素都有自己的的ID,以便它可以很容易地被访问到。
常用于存储数据,并且能够精准找到数据的位置
数组就像是
操作方法
在w3c里面,官方给出的数组方法共有30个之多,实际上在开发当中,我们常用的可能也就十多个,下面就把数组的方法写下来:
其中可以按照功能来简单的划分为6个功能:返回功能,其他功能(不好定义的功能),增加和删除的功能,计算功能,排序功能和ES6新增的功能
一,返回功能
1、concat(),连接两个或者更多的数组,并返回一个新的数组。
let arr = [2, 3, 1, 9, 7, 5, 8, 22];
let arr2 = ['这是arr2'];
console.log(arr.concat(arr2)); // 输出:[ 1, 2, 3, 5, 7, 8, 9, 22, '这是arr2' ]
2、filter(),返回一个数组,里面包含符合条件的元素。
3、find(),返回数组中符合条件的第一个元素。
4、findIndex(),返回数组中符合条件的第一个元素的所在位置。
5、indexOf(),返回数组中指定元素的位置,如果数组中没有指定的元素则返回-1。
6、isArray(),判断个对象是否为数组,是 返回true,不是 返回false。
7、lastIndexOf(),返回指定的元素在数组中最后出现的位置,在数组的后面开始搜索。
8、map(),返回一个新数组,数组中的元素是原始数组的元素调用函数之后处理的值。
9、slice(),返回指定的数组元素,第一个参数是开始的位置,第二个是结束位置(不包含结束位置的元素)。
let arr = [2, 3, 1, 9, 7, 5, 8, 22];
console.log(arr);
console.log(arr.slice(2, 6));
输出结果:
[ 2, 3, 1, 9, 7, 5, 8, 22 ]
[ 1, 9, 7, 5 ]
10、some(),检测数组中是否含有指定的元素,有的话就返回true,没有就返回false。
11、toString(),将数组转为字符串,并返回结果。
let arr = [2, 3, 1, 9, 7, 5, 8, 22];
console.log(arr);
console.log(arr.toString());
输出结果:
[ 2, 3, 1, 9, 7, 5, 8, 22 ]
2,3,1,9,7,5,8,22
26、ES6:entries(),返回数组的迭代对象。
二,增加和删除
12、pop(),删除数组的最后一个元素,并返回删除的元素。
let arr = [2, 3, 1, 9, 7, 5, 8, 22];
console.log(arr);
console.log(arr.pop());
console.log(arr);
以下是输出结果:
[ 2, 3, 1, 9, 7, 5, 8, 22 ]
22
[ 2, 3, 1, 9, 7, 5, 8 ]
13、push(),在数组后面添加新元素,并返回数组新的长度。
let arr = [2, 3, 1, 9, 7, 5, 8, 22];
console.log(arr);
arr.push("新增1", "新增2");
console.log(arr);
以下是输出结果:
[ 2, 3, 1, 9, 7, 5, 8, 22 ]
[ 2, 3, 1, 9, 7, 5, 8, 22, '新增1', '新增2' ]
14、shift(),删除并返回数组第一个元素。
let arr = [2, 3, 1, 9, 7, 5, 8, 22];
console.log(arr);
arr.shift();
console.log(arr);
以下是输出:
[ 2, 3, 1, 9, 7, 5, 8, 22 ]
[ 3, 1, 9, 7, 5, 8, 22 ] // 原来数组的第一个元素已经被删除
15、unshift(),向数组的最前面添加新元素,并返回新的数组长度。
let arr = [2, 3, 1, 9, 7, 5, 8, 22];
console.log(arr);
arr.unshift("new1", "new2", "new3");
console.log(arr);
输出结果:
[ 2, 3, 1, 9, 7, 5, 8, 22 ]
[ 'new1', 'new2', 'new3', 2, 3, 1, 9, 7, 5, 8, 22 ]
16、splice(),添加和删除数组中的元素,第一个参数是要删除的元素的开始位置,第二个参数是要删除的元素的个数。第三个以及以后的参数都是添加到数组中的新元素。
let arr = [2, 3, 1, 9, 7, 5, 8, 22];
console.log(arr);
console.log(arr.splice(2, 3, "这是新添加的元素"));
console.log(arr);
输出结果:
[ 2, 3, 1, 9, 7, 5, 8, 22 ]
[ 1, 9, 7 ]
[ 2, 3, '这是新添加的元素', 5, 8, 22 ]
三,其他功能
17、every(),检测数组所有元素是否都符合指定条件,接收一个函数作为参数,用于检测数组中的元素,用法如下:
var ages = [32, 33, 12, 40];
function checkAdult(age) {
return age >= 22;
}
console.log(ages.every(checkAdult));
18、forEach(),数组每个元素都执行一次回调函数。
19、join(),将数组中的所有元素放到一个字符串,参数是字符串的分隔符。
四,计算功能
20、reduce(),将元素的值计算为一个值,从左到右。
21、reduceRight(),将元素的值计算为一个值,从右到左。
五,排序功能
22、reverse(),反转数组元素的排列顺序。
23、sort(),对数组进行排序,可以接收一个比较函数。
升序:
function compaer (value1, value2) {
if (value1 < value2) {
return -1;
}
if (value1 > value2) {
return 1;
}
else {
return 0;
}
}
降序:
function compaer (value1, value2) {
if (value1 < value2) {
return 1;
}
if (value1 > value2) {
return -1;
}
else {
return 0;
}
}
六,ES6新增的功能
24、ES6:copyWithin(),从数组的指定位置复制元素到数组的指定位置。语法:array.copyWithin(target, start, end)。
25、ES6:entries(),返回数组的迭代对象。如下:
var arr2 = ["壹", "貮", "叁", "肆", "伍"];
var a3 = arr2.entries();
console.log(a3.next().value)
console.log(a3.next().value)
console.log(a3.next().value)
console.log(a3.next().value)
console.log(a3.next().value)
如果ages数组中任意一个元素不符合checkAdult函数里面的条件,都会返回false,并且剩余的元素不会再进行检测。
26、ES6:fill(),将一个固定的值替换数组里面的元素。语法:array.fill(value, start, end)。
27、ES6:from(),将伪数组转换为真正的数组。
28、ES6:includes(),判断数组中是否函数指定的值,如有返回true,否则返回false。
let arr = [2, 3, 1, 9, 7, 5, 8, 22];
console.log(arr.join("-")); // 输出 2-3-1-9-7-5-8-22
29、ES6:keys(),从数组创建一个包含数组键的可迭代对象。
30、valueOf(),返回数组对象的原始值。
七,这些方法会改变原数组
会改变原数组的方法:push、pop、shift、unshift、sort、reverse、splice。
使用Array.isArray()方法检测一个变量是否为数组是比较靠谱的做法。