数组常用的操作方法
一些比较简单的、常见的操作方法就不在此赘述了,可以移步MDN_Array。例如
pop,push ,shift,unshift,splice,slice,concat,jion ,reverse,sort
在以上的方法中注意
1、splice的3种用法,增加、修改、删除
2、slice 是截取从索引n
到m
(不包含m)
3、sort排序的原理(将一个从1到n的数组无序的输出)
本文主要介绍以下操作方法:
find、some、every、filter、forEach、includes、map、reduce
1、find
方法返回数组中满足提供的测试函数的第一个元素的值
。否则返回undefined
let ary=[12,31,46];
// 1.find
let temp=ary.find(item=>item%2===0);
console.log(temp);
// 输出
12
注意:
1、当找到一个满足条件的元素后,马上break,不再往后查询;
2、返回值:数组中的一个值/ undefined
2、some
some() 方法测试数组中的某些元素是否通过由提供的函数实现的测试。
let arr = [1,2,3,4,5];
let result = arr.some(function (item,index) {
return item > 3
});
console.log(result);
//输出
true
返回值:true / false
3、every
every() 方法测试数组的所有元素是否都通过了指定函数的测试。
let arr = [1,2,3,4,5];
let result = arr.every(function (item, index) {
return item > 0
});
console.log(result);
//输出
true
返回值:true / false
4、filter
filter 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
let arr=[1,3,5,8,22,35];
console.log(arr.filter((item) => {
return item > 3;
}));
//输出 [ 5, 8, 22, 35 ]
返回值:一个新的数组;如果没有,则是空数组。
5、forEach
forEach() 方法对数组的每个元素执行一次提供的函数。
function logArrayElements(element, index, array) {
console.log("a[" + index + "] = " + element);
}
[2, 5,,9].forEach(logArrayElements);
//输出
a[0] = 2
a[1] = 5
a[3] = 9
注意:a[2]没有输出,这是因为没有定义该项;但是有占位,此时它的值是undefined
注意:没有返回一个新数组! & 没有返回值!
应用场景:为一些相同的元素,绑定事件处理器!
6、includes
includes( )方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。
let ary=[12,31,46];
console.log(ary.includes(31));
//输出
true
返回值:true / false
7、map
map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
let new_array = arr.map(function callback(currentValue, index, array) {
// Return element for new_array
}[, thisArg])
let ary=[12,31,46];
//4.map 创建一个新的数组,其结果是该数组中每个元素都调用一个提供的函数执行后的结果
console.log(ary.map(item => item * 10));
返回值:一个新数组,每个元素都是回调函数的结果。
8、reduce
reduce() 方法对累加器和数组中的每个元素(从左到右)应用一个函数,将其减少为单个值。
let arr=[0, 1, 2, 3, 4];
let sum=arr.reduce(function(accumulator, currentValue, currentIndex, array){
return accumulator + currentValue;
},10);
console.log(sum);
//输出
20
返回值:函数累计处理的结果
总结:
1、includes和some、every的用法相似,并且返回值都是true / false ,区别在于判断逻辑不同。
2、filter,map的返回值都是数组,filter是在原数组上筛选符合条件的元素;map则是对原数组的每一个元素都进行处理,然后返回新的数组。
3、比较奇特的是forEach是没有返回值的,reduce的返回值是 一个函数累计处理的结果。
4、find的返回是数组中的某个元素;或者是undefined。