1.forEach 方法
forEach()方法没有返回值,总是返回undefined。forEach()传入方法作为该方法的参数。forEach()参数传入的方法有三个形参。forEach()不会改变原始数组。
传入方法的三个参数分别是:
value当前循环中的元素值 (必选)index当前循环中的索引值 (可选)array当前遍历的数组 (可选)
注: 该方法可理解为仅仅遍历了一边数组,没有返回值。
const arr = [1,2,3,4,5,6,7];
const newArr = arr.forEach((value,index,array)=>{
console.log(value,index,array);
})
console.log(newArr) // undefined
2.map 方法
map()返回一个新数组,新数组的长度与原数组长度相同,数组元素为循环内处理的结果。map()传入方法作为该方法的参数。map()参数传入的方法有三个形参。map()不会改变原始数组。
传入方法的三个参数分别是:
value当前循环中的元素值 (必选)index当前循环中的索引值 (可选)array当前遍历的数组 (可选)
注: 该方法经常使用、注意返回数组的长度与原数组相同
const arr = [1, 2, 3, 4, 5, 6, 7];
const newArr = arr.map((value, index, array) => {
console.log(value, index, array);
return value * 2;
});
console.log(newArr); // [2, 4, 6, 8, 10, 12, 14]
3.filter 方法
filter()返回一个新数组,新数组的长度可能会改变,数组元素为循环内处理的结果。filter()传入方法作为该方法的参数。filter()参数传入的方法有三个形参。filter()不会改变原始数组。
传入方法的三个参数分别是:
value当前循环中的元素值 (必选)index当前循环中的索引值 (可选)array当前遍历的数组 (可选)
注: 过滤器方法,只返回满足条件的元素值,(返回的新数组中,只包含满足条件的值)
const arr = [1, 2, 3, 4, 5, 6, 7];
const newArr = arr.filter((value, index, array) => {
if (value > 5) {
return value;
}
});
console.log(newArr); // [6, 7]
4.some 方法
some()用于判断数组中是否有元素满足条件。some()传入方法作为该方法的参数。some()参数传入的方法有三个形参。some()返回boolean值some()不会改变原始数组。some()循环数组的每个元素。- 如果有一个元素满足条件,则直接返回
true并停止循环 - 如果没有满足条件的元素,则返回
false。
- 如果有一个元素满足条件,则直接返回
传入方法的三个参数分别是:
value当前循环中的元素值 (必选)index当前循环中的索引值 (可选)array当前遍历的数组 (可选)
注:该方法可用于数组扁平化等一系列情况
const arr = [1, 2, [3, [4, 5]]];
const flatten = (arr) => {
while (arr.some((item) => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
};
console.log(flatten(arr));//[1,2,3,4,5]
5.every 方法
every()用于检测数组所有元素是否都符合指定条件。every()传入方法作为该方法的参数。every()参数传入的方法有三个形参。every()返回boolean值every()不会改变原始数组。every()循环数组的每个元素。- 如果数组中检测到有一个元素不满足,则直接返回
false并停止循环 - 如果所有元素都满足条件,则返回
true。
- 如果数组中检测到有一个元素不满足,则直接返回
传入方法的三个参数分别是:
value当前循环中的元素值 (必选)index当前循环中的索引值 (可选)array当前遍历的数组 (可选)
注: 该方法可与some 对比来记
const arr = [1, 2, 3, 4, 5, 6, 7];
let judge = arr.every((value) => {
return value > 0;
});
console.log(judge); //true
6.reduce 方法
我对该函数的理解就是作为累加器呀等等一些操作,他十分的方便,大家可以去尝试使用一下
reduce()可以理解为他就是将数组从左至右不断累积操作,最终变为一个值。reduce()传入方法作为该方法的第一个参数。还有一个可选初始值作为第二个参数。如果不传第二个参数,则初始值为数组第一个元素值。reduce()参数传入的方法有四个形参。
传入方法的四个参数分别是:
pre当前循环中的元素值 (必选)cur当前循环中的元素值 (必选)index当前循环中的索引值 (可选)array当前遍历的数组 (可选)
const arr = [1, 2, 3, 4, 5, 6, 7];
let sum = arr.reduce((pre, cur, index, array) => {
console.log(pre, cur, index, array);
return pre + cur;
}, 0);
console.log(sum); //28
const obj = {
name: "yxj",
info: {
address: {
location: "北京",
},
},
};
const attrs = ["info", "address", "location"];
const loc = attrs.reduce((newObj, k) => newObj[k], obj);
console.log(loc);//"北京",
7. find 方法
find()查找第一个满足条件的值,返回这个元素,如果没有符合的返回undefined。find()不会改变原始数组。find()传入方法作为该方法find()参数传入的方法有三个形参。
传入方法的三个参数分别是:
value当前循环中的元素值 (必选)index当前循环中的索引值 (可选)array当前遍历的数组 (可选)
const arr = [1, 2, 3, 4, 5, 6, 7];
const ret = arr.find((value) => {
return value > 2;
}, 0);
console.log(ret); //3
8. findIndex 方法
与find类似,只是返回的是第一个满足条件元素的索引值
const arr = [1, 2, 3, 4, 5, 6, 7];
const ret = arr.findIndex((value) => {
return value > 2;
}, 0);
console.log(ret); //2
如有笔误请与我联系,以上仅作为自己整理的笔记。