var arr = ["a", "b", "c", "d", "e"];
// 我们采⽤最原始的⽅式来完成迭代
for (var i = 0; i < arr.length; i++) {
console.log(i, arr[i]);
}
概念:数组迭代方法就是对每个数组项进行操作。
内容:
1.Array.forEach();forEach()方法为每个数组元素调用一次函数(回调函数);
var txt = "";
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(myFunction);
function myFunction(value, index, array) {
txt = txt + value + "<br>";
}
注意:函数的的3个形参分别为:
- 项目值
- 项目索引
- 数组本身
2.Array.map();
map() 方法通过对每个数组元素执行函数来创建新数组。
map() 方法不会对没有值的数组元素执行函数。
map() 方法不会更改原始数组。
var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);
function myFunction(value, index, array) {
return value * 2;
}
3.Array.filter();
filter() 方法创建一个包含通过测试的数组元素的新数组。
之前的写法:
var arr = [45, 4, 9, 16, 25];;
// 请将arr⾥在的偶数提取出来 ,放在⼀个新的数组⾥⾯
var newArr = [];
arr.forEach(function (item, index, _arr) {
if (item > 18) {
newArr.push(item);
}
});
现在的写法:
var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
4.归并⽅法--Array.reduce();
reduce() 方法在每个数组元素上运行函数,以生成(减少它)单个值。
reduce() 方法在数组中从左到右工作。另请参阅 reduceRight()。
reduce() 方法不会减少原始数组。
下面的函数求数组中值的和。其中“100”是初始值。其中“total”参数是前一个返回的值
var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction,100);
function myFunction(total, value, index, array) {
return total + value;
}
var arr = [1, 3, 5, 9, 7, 4, 11];
// 请问,上⾯的arr当中有偶数吗?
//假设法,我假设上⾯没有偶数
// flag为false代表没有偶数,false为true代表有偶数
var flag = false;
for (var i = 0; i < arr.length; i++) {
if (arr[i] % 2 == 0) {
flag = true;
break;
}
}
console.log(flag?"有偶数":"没偶数");
现在的写法:
var arr = [1, 3, 5, 9, 7, 4, 11];
// 请问,上⾯的arr当中有偶数吗?
var flag = arr.some(function (item, index, _arr) {
return item % 2 == 0;
});
// false||false||false||false||false||true||false
console.log(flag); //true
//上⾯的代码⾥⾯,它是将所有的结果执⾏或运算,最终的结果就是true
6.Array.every();
这个例子检查所有数组值是否大于 18:
var arr = [1, 3, 5, 9, 7, 4, 11];
// 问上⾯的数组中的元素是否全都是奇数
var flag = arr.every(function (item, index, _arr) {
return item % 2 == 1;
});
//true&&true&&true&&true&&true&&false&&true;
console.log(flag); //false
//every要对所有的结果做逻辑与判断,⼀假即假
7.Array.indexOf();
indexOf() 方法在数组中搜索元素值并返回其位置。
var fruits = ["Apple", "Orange", "Apple", "Mango"];
var a = fruits.indexOf("Apple");
注意:如果未找到项目,Array.indexOf() 返回 -1。
如果项目多次出现,则返回第一次出现的位置。
8.Array.lastIndexOf();
Array.lastIndexOf() 与 Array.indexOf() 类似,但是从数组结尾开始搜索。
9.Array.find()
find() 方法返回通过测试函数的第一个数组元素的值。
这个例子查找(返回)大于 18 的第一个元素的值:
var numbers = [4, 9, 16, 25, 29];
var first = numbers.find(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
10.Array.findIndex()
findIndex() 方法返回通过测试函数的第一个数组元素的索引。
这个例子查找大于 18 的第一个元素的索引:
var numbers = [4, 9, 16, 25, 29];
var first = numbers.findIndex(myFunction);
function myFunction(value, index, array) {
return value > 18;
}