1.循环类型 forEach()
forEach();
语法
forEach(callbackFn)
forEach(callbackFn, thisArg)
例子
/**
*
* @param {any} element 数组中正在处理的当前元素
* @param {number} index 数组中正在处理的当前元素的索引。
* @param {Array} array1 调用了 forEach() 的数组本身
*/
const logArrayElements = (element, index ,array1) => {
console.log(`a[${index}] = ${element},array1.length=${array1.length}`);
};
const array1 = ['a', 'b', 'c'];
array1.forEach(logArrayElements);
//输出
//a[0] = a,array1.length=3
//a[1] = b,array1.length=3
//a[2] = c,array1.length=3
//使用for循环实现
for (let index = 0; index < array1.length; index++) {
if(array1[index]!=undefined){
console.log(`a[${index}] = ${array1[index]},array1.length=${array1.length}`);
}
}
也可以传入当前对象,修改当前对象的值,但是不推荐
/**
*
* @param {any} element 数组中正在处理的当前元素
* @param {number} index 数组中正在处理的当前元素的索引。
* @param {Array} array1 调用了 forEach() 的数组本身
*/
const logArrayElements = (element, index ,array1) => {
array1[index]=array1[index]+1
console.log(`a[${index}] = ${element},array1.length=${array1}`);
};
const array1 = [1, 2, 3];
array1.forEach(logArrayElements,array1);
console.log(array1)
//输出
//a[0] = 1,array1.length=2,2,3
//a[1] = 2,array1.length=2,3,3
//a[2] = 3,array1.length=2,3,4
//[ 2, 3, 4 ]
for (let index = 0; index < array1.length; index++) {
if(array1[index]!=undefined){
array1[index]=array1[index]+1
console.log(`a[${index}] = ${array1[index]},array1.length=${array1}`);
}
}
2.过滤数组 filter()
filter()
就像把你文件夹里的全部照片挑选喜欢的复制到一个新的文件夹
语法
filter(callbackFn)
filter(callbackFn, thisArg)
例子
function isBigEnough(element, index, array) {
return (element >= 3);
}
const array1 = [1,2,3,4,5,6]
const filtered = array1.filter(isBigEnough);
console.log('filtered')
console.log(filtered);
console.log('array1保持不变'); //如果你想埋雷,可以array1.filter(isBigEnough,array1),然后修改值
console.log(array1);
//结果
//filtered
//[ 3, 4, 5, 6 ]
//array1
//[ 1, 2, 3, 4, 5, 6 ]
for实现
const array1 = [1,2,3,4,5,6]
const filtered2 = [];
for (let index = 0; index < array1.length; index++) {
if(array1[index]!=undefined&&array1[index]>=3){
filtered2.push(array1[index]);
}
}
console.log('filtered2')
console.log(filtered2);
console.log('array1保持不变');
console.log(array1);
3.“映射”新数组map()
map()
创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成(就像把你文件夹里的全部照片通过ps修完后复制到一个新的文件夹)
语法:
map(callbackFn)
map(callbackFn, thisArg)
例子:
const numbers = [1, 4, 9];
const roots = numbers.map((num) => Math.sqrt(num));
//结果 [ 1, 2, 3 ]
const numbers = [1, 4, 9];
function mathSqrt(element, index, array){
return Math.sqrt(element)
}
const roots = numbers.map(mathSqrt);
//结果 [ 1, 2, 3 ]
4.数组判断函数 every() some()
some()
对数组中的每个元素都执行一次指定的函数(callback),直到此函数返回 true。如果m满足条件,some 将返回 true
只需要有一个满足条件就返回true
every()
对数组中的每个元素都执行一次指定的函数(callback),直到此函数返回 false。如果不满足条件,every 将返回 false,每个元素执行后都返回true,ever才会返回true
需要所有的元素都满足条件才能返回true
例子
function isGreater6(element, index, array) {
return (element > 6);
}
var passed = [1,2,3,4,5,6].some(isGreater6);
console.log(passed); //false
passed = [1,2,3,4,5,6,7].some(isGreater6);
console.log(passed); // true 因为有个7
function isLeq6(element, index, array) {
return (element <= 6);
}
var passed = [1,2,3,4,5,6].every(isLeq6);
console.log(passed); //tr
passed = [1,2,3,4,5,6,7].every(isLeq6);
console.log(passed); // false 也是因为有个7
5.数组查找元素 lastIndexOf() indexOf()
lastIndexOf()
返回数组中元素最后一次出现的下标
indexOf()
返回数组中元素第一次出现的下标
语法
lastIndexOf(searchElement)
lastIndexOf(searchElement,fromIndex)
indexOf(searchElement)
indexOf(searchElement,fromIndex)
例子
var array = [1,2,3,1];
var index = array.lastIndexOf(1);
console.log(index); // 1
index = array.lastIndexOf(4);
console.log(index); // -1
index = array.lastIndexOf(1, 3); // [1,2,3,1]
console.log(index); // 3
index = array.lastIndexOf(1, 2); // [1,2,3]
console.log(index); // 0
index = array.lastIndexOf(1, -2); // [1,2,3]
console.log(index); // 0
index = array.lastIndexOf(1, -1); // [1,2,3,1]
console.log(index); // 3
var array = [1,2,3,1];
var index = array.indexOf(1);
console.log(index); // 0
index = array.indexOf(4);
console.log(index); // -1