Es5数组新增的方法及用法

1.forEach
forEach是Array新方法中最基本的一个,就是遍历,循环。例如下面这个例子:

[1, 2 ,3, 4].forEach(alert);
等同于下面这个传统的for循环:

var array = [1, 2, 3, 4];

for (var k = 0, length = array.length; k < length; k++) {
alert(array[k]);
}
forEach方法中的function回调支持3个参数,第1个是遍历的数组内容;第2个是对应的数组索引,第3个是数组本身。

[].forEach(function(value, index, array) {
    // ...
});

jQuery中的$.each方法:

$.each([], function(index, value, array) {
    // ...
});

var sum = 0;

[1, 2, 3, 4].forEach(function (item, index, array) {
console.log(array[index] == item); // true
sum += item;
});

alert(sum); // 10
2.map

var data = [1, 2, 3, 4];

var arrayOfSquares = data.map(function (item) {
return item * item;
});

alert(arrayOfSquares); // 1, 4, 9, 16
callback需要有return值,如果没有,就会是undefined

3.filter
filter为“过滤”、“筛选”之意。指数组filter后,返回过滤后的新数组。用法跟map极为相似:

var data = [0, 1, 2, 3];
var arrayFilter = data.filter(function(item) {
    return item;
});
console.log(arrayFilter); // [1, 2, 3]
返回值只要是弱等于== true/false就可以了,而非非得返回 === true/false.
4.some
some意指“某些”,指是否“某些项”合乎条件。与下面的every算是好基友,every表示是否“每一项”都要靠谱。

some要求至少有1个值让callback返回true就可以了

var scores = [5, 8, 3, 10];
var current = 7;

function higherThanCurrent(score) {
return score > current;
}

if (scores.some(higherThanCurrent)) {
alert("通过了!");
}

5.every
some的基友关系已经是公开的秘密了,同样是返回Boolean值,不过,every需要每一个妃子都要让朕满意,否则——“来人,给我拖出去砍了!”

6.indexOf

返回整数索引值,如果没有匹配(严格匹配),返回-1fromIndex可选,表示从这个位置开始搜索,若缺省或格式不合要求,使用默认值0。

var data = [2, 5, 7, 3, 5];
console.log(data.indexOf(5, "3")); // 4 (从3号位开始搜索)
7.lastIndexOf
lastIndexOf方法与indexOf方法类似:
只是lastIndexOf是从字符串的末尾开始查找,而不是从开头。还有一个不同就是fromIndex的默认值是array.length - 1而不是0.
var data = [2, 5, 7, 3, 5];
console.log(data.lastIndexOf(5, 3)); // 1 (从后往前,索引值小于3的开始搜索)

 
原文地址:https://www.cnblogs.com/wwwxxjsyy/p/10905050.html