ES5总结1:数组Array新特性最全最精简的详解

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]

猜你喜欢

转载自blog.csdn.net/xfwdxt/article/details/82147162