2个位置方法:indexOf lastIndexOf
5个迭代方法:forEach every some filter map
2个高阶函数:reduce reduceRight (可用于数组求和)
API:
1、indexOf(searchElement: T, fromIndex?: number): number; // 返回被查找的元素在数组中的索引index,判断标准为恒等于“===
lastIndexOf(searchElement: T, fromIndex?: number): number; // 从后往前查找,返回元素在数组中的索引index
var arr = [1,2,3,4,5,4,3,2,1];
// 一个参数
var index = arr.indexOf(4); // 3
alert(index);
// 两个参数
index = arr.indexOf(4, 4);
alert(index); // 5
alert(arr.indexOf(true)); // -1
alert(arr.lastIndexOf(3)); // 6
2、(1) forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void;
对于数组每一个元素执行一个函数
(2) every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean;
如果都返回true,则最终返回true,否则返回false。
(3)some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean;
如果有一个返回true,则最终返回true,否则返回false
(4)filter<S extends T>(callbackfn: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[];
原数组中所有满足条件的元素组成的新数组。
(5)map<U>(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[];
函数返回值组成新数组并返回。
// 对于数组每一个元素执行一个函数
arr.forEach(function (value, index, array) {
// ...
})
// 对于数组每一个元素执行一个函数,如果都返回true,则最终返回true,否则返回false
var result = arr.every(function (value, index, array) {
return value > 2;
}, 2);
alert(result); // false
// 对于数组每一个元素执行一个函数,如果有一个返回true,则最终返回true,否则返回false
var someResult = arr.some(function (value, index, array) {
return value >= 5;
}, 2);
// alert(someResult); // true
// 对于数组每一个元素执行一个函数,用指定的条件过滤,返回所有满足条件的元素组成的新数组
var filterResult = arr.filter(function (value,index,array) {
return value > 2;
});
console.log(filterResult); // [3, 4, 5, 4, 3]
// 对于数组每一个元素执行一个函数,函数返回值组成新数组并返回
var mapResult = arr.map(function (value,index,array) {
return value * 2;
});
console.log(mapResult); // [2,4,6,8,10,8,6,4,2]
3、reduce和reduceRight高阶函数
reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T;
reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T;
从数组中第2个元素开始执行函数,把上一次的函数返回值作为本次函数的第一个参数的值previousValue,(previousValue初始值默认为原数组第一个元素的值,也可通过initialValue参数指定);reduceRight从右边开始遍历(同样从第2个元素开始)
// 从数组中第2个元素开始执行函数,把上一次的函数返回值作为本次函数的第一个参数的值previousValue,(previousValue初始值默认为原数组第一个元素的值)
var reduceResult = arr.reduce(function (previousValue, currentValue, currentIndex, array) {
return previousValue + currentValue; // 此时相当于数组求和
});
alert(reduceResult); // 25 原数组[1,2,3,4,5,4,3,2,1]