forEach 按升序依次遍历数组中的值
Set( ):Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。
[1, 2, 3].forEach(c => {
console.log(c * 2);
});
// 2 4 6
[1, 2, 3].forEach((item, index, array) => {
console.log(item * index);
});
// 0 2 6
some()检测数组中是否存在满足条件的元素
验证数组内某一个项是否匹配。
var result = [{ age: 20 }, { age: 18 }, { age: 10 }].some(c => c.age > 18); //true
[1,2,3].some(c=> c === 3); // true
[1,2,3].some(c=> c > 0); // true
[1,2,3].some(c=> c < 10); // true
[1,1,1].some(c=> c === 1); // true
[1,2,3].some(c=> c === 5); // false
[1, 2, 3, 4, 5, 4, 3, 2, 1].some((item, index, array) => item > 2); // true
every()检测数组中的元素是否全部满足条件
验证数组内每一个项是否匹配。
[{ age: 20 }, { age: 18 }, { age: 10 }].every(function (item) {
return item.age > 9;
});
[1,2,3].every(c=> c === 3); // false
[1,2,3].every(c=> c > 0); // true
[1,2,3].every(c=> c < 10); // true
[1,1,1].every(c=> c === 1); // true
[1, 2, 3, 4, 5, 4, 3, 2, 1].every((item, index, array) => item > 2); // false
filter()过滤原数组,返回新数组
创建一个新数组,根据条件将搜索匹配的项放入至新数组内,并将此数组返回。
[{ age: 20 }, { age: 18 }, { age: 10 }].filter(function (item, index) {
return index > 0 && item.age > 20;
});
[1,2,3].filter(c=> c > 1); // [2,3]
[1,2,3].filter(c=> c > 5); // []
[1,2,3].filter(c=> c === 3); // [3]
[1, 2, 3, 4, 5, 4, 3, 2, 1].filter((item, index, array) => item > 2); //[3, 4, 5, 4, 3]
map() 对数组中的每一个元素都进行处理,返回新的数组
遍历数组,针对每一个项返回一个新值,将新值放进新数组里,最后将新数组返回。
[1, 2, 3].map(c => {
return c * 2;
}); // [2,4,6]
[1, 2, 3].map(c => {
return 2;
}); // [2,2,2]
[1, 2, 3].map((item, index, array) => {
return item * index;
}); // [0,2,6]
[{ a: 1 }, { a: 2 }, { a: 3 }, { a: 4 }, { a: 5 }].map(c => c.a); // [1, 2, 3, 4, 5]
reduce()数组的累加器,合并成为一个值。
Set是一个无法添加重复值的集合。
const set = new Set(); //创建一个空集合
const s1 = new Set(["val1", "val2", "val3"]); // 使用数组初始化集合
console.log(s1.size); // 3,长度访问跟数组的length不一样
s1.add("Matt").add("Frisbie"); //可以链式添加
s1.has('Matt'); // true,是否存在指定的项
console.log(s1); // Set(5) {"val1", "val2", "val3", "Matt", "Frisbie"}
s1.add("Matt");
console.log(s1); // Set(5) {"val1", "val2", "val3", "Matt", "Frisbie"},无法添加重复项
let deleted = s1.delete('Matt'); // delete方法返回删除结果
console.log(deleted); // true
console.log(s1); // Set(4) {"val1", "val2", "val3", "Frisbie"}
deleted = s1.delete('Matt');
console.log(deleted); // false,无法重复删除
//可通过for of访问每个项
for (let item of s1) {
console.log(item);
}
//val1 val2 val3 Frisbie
//也可通过forEach方法访问
s1.forEach(item => console.log(item));
find() / findIndex() 根据条件找到数组成员 [ES6];findIndex( ):返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1。
find:根据条件查找数组内的单个项,根据条件查找项,只要返回true那就证明找到了,如果为false的话,那就继续遍历查找。
[1,2,3].find(c=> c === 1); // 1
[1,2,3].find(c=> c == '1'); // 1
[1,2,3].find(c=> c === 5); // undefined
[1,2,3].find(c=> c > 1); // 2
const people = [{
name: "Matt",
age: 27
},
{
name: "Nicholas",
age: 29
}];
//三个参数分别是:当前遍历的项、当前下标、原始数组。
let p = people.find((element, index, array) => {
console.log(element, index, array);
return element.age > 28;
});
console.log(p); // {name: "Nicholas", age: 29}
findIndex:根据条件查找数组内匹配项的下标。
[{ age: 20 }, { age: 18 }, { age: 10 }].findIndex(function (item) {
return item.age === 10
}); //2
[1,2,3].findIndex(c=> c === 5); // -1
[1,2,3].findIndex(c=> c > 1); // 1
flat()深度遍历展开数组
将多维数组扁平化,并返回一个新数组。方法接受一个数值,表示要扁平化的数组维度。
let ary = [1, [2, [3, [4, 5]]], 6];
console.log(ary.flat(1)); // [1, 2, Array(2), 6]
console.log(ary.flat()); // [1, 2, Array(2), 6],不传参默认为1
console.log(ary.flat(2)); // [1, 2, 3, Array(2), 6]
console.log(ary.flat(3)); // [1, 2, 3, 4, 5, 6]
console.log(ary.flat(100)); // [1, 2, 3, 4, 5, 6],可以超过维度深度,超过则会扁平化所有维度
console.log(ary.flat(Infinity)); //无限大的层数,表示可以扁平化所有维度
console.log(ary); // [1, Array(2), 6]
Set( ):Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。
const set = new Set(); //创建一个空集合
const s1 = new Set(["val1", "val2", "val3"]); // 使用数组初始化集合
console.log(s1.size); // 3,长度访问跟数组的length不一样
s1.add("Matt").add("Frisbie"); //可以链式添加
s1.has('Matt'); // true,是否存在指定的项
console.log(s1); // Set(5) {"val1", "val2", "val3", "Matt", "Frisbie"}
s1.add("Matt");
console.log(s1); // Set(5) {"val1", "val2", "val3", "Matt", "Frisbie"},无法添加重复项
let deleted = s1.delete('Matt'); // delete方法返回删除结果
console.log(deleted); // true
console.log(s1); // Set(4) {"val1", "val2", "val3", "Frisbie"}
deleted = s1.delete('Matt');
console.log(deleted); // false,无法重复删除
//可通过for of访问每个项
for (let item of s1) {
console.log(item);
}
//val1 val2 val3 Frisbie
//也可通过forEach方法访问
s1.forEach(item => console.log(item));
Set的经典应用-去重
let numbers = [1, 2, 3, 5, 6, 1, 2, 3];
numbers = Array.from(new Set(numbers));
console.log(numbers); // [1, 2, 3, 5, 6]