forEach
var arr = [1, 2, 3, 4, 5];
// forEach
arr.forEach(function (item, i, array) {
console.log(item, i, array);
})
结果:
1 0 [1, 2, 3, 4, 5]
2 1 [1, 2, 3, 4, 5]
3 2 [1, 2, 3, 4, 5]
4 3 [1, 2, 3, 4, 5]
5 4 [1, 2, 3, 4, 5]
map:其最主要的作用就是将原数组按照一定的规则映射成一个新的数组。再将其返回,注意是返回一个新的数组,而不是将原数组直接改变使用方式和forEach类似,也是接受一个回调函数,一个改变内部this指向的对象。
var arr = [1, 2, 3, 4, 5];
var newArr = arr.map(function (e, i, array) {
return 'hello ' + e;
})
结果:
["hello 1", "hello 2", "hello 3", "hello 4", "hello 5"] // newArr
[1, 2, 3, 4, 5] // arr
filter 返回一个新的数组;
var arr = [1, 2, 3, 4, 5];
var newArr2 = arr.filter(function (e, i, array) {
if (e >= 2) return true;
})
some vs every some与接下里的every正好相对,some是只要数组中的某个值,符合你给定的判断条件就返回true,而every则是数组中的所有值都符合你给定的判断条件的时候才会返回true,否则就返回false,也就是说两个方法最后得到的都是true or false
var arr = [0, 1, 2, 3, 4, 5];
var result = arr.some(function (e, i, array) {
if (e === 3) {return true};
});
结果 :true
var arr = [0, 1, 2, 3, 4, 5];
var result2 = arr.every(function (e, i, array) {
if (e > 3) {return true};
});
结果:false
indexOf
var arr = [0, 1, 2, 3, 4, 5];
arr.indexOf(1) // 1
lastIndexOf
var arr = [0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0];
arr.lastIndexOf(1) // 9
reduce:如果没有传入initialValue,则默认是数组的第一项。第二个及其后面的参数分别是当前值,索引,数组本身
var arr = [0, 1, 2, 3, 4, 5],
sum = arr.reduce(function (init, cur, i, array) {
return init + cur;
});
//output
sum // 15
reduceRight 类似reduce
set 数组去重
let test = [0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0];
[...new Set(test)];
结果:[0,1,2,3,4,5]
from()
let myArray = {'0':'a','1':'b','2':'c'};
let arr = Array.from(myArray);
console.log(arr); //[]由于没有length属性打印结果为一个空数组
let myArray = {'0':'a','1':'b','2':'c',length:3};
let arr = Array.from(myArray);
console.log(arr); //["a", "b", "c"]
如果参数是一个真正的数组,Array.from()会返回一个一模一样的新数组
var arr = [1,2,3];
var myArr = Array.from(arr);
console.log(myArr); //[1, 2, 3]
myArr[0] = 4;
console.log(myArr); //[4, 2, 3]
keys(),valueOf(),entries()方法
keys()遍历出所有的索引值
for (let index of ['a', 'b'].keys()) {
console.log(index);
} //0 1
valueOf()遍历所有的值
for (let index of ['a', 'b'].valueOf()) {
console.log(index);
} //a b
entries()遍历值和索引
for (let index of ['a', 'b'].entries()) {
console.log(index);
} //[0, "a"] [1, "b"]