之前就像總結(jié)的 但是看了一些資料 覺得內(nèi)容很多就沒有來整理雷激,覺得腦子過一遍差不多。結(jié)果沒記住 sad
查看數(shù)組的哪些方法可以直接console.dir(Array.prototype)
數(shù)組的迭代方法
let arr = [1,2,3,4,5,6]
- Array.forEach() 值:一般用于遍歷
//不能 return
arr.forEach((v,i,a)=>{
})
- Array.map() 值:返回處理過的數(shù)組
不會更改原來的函數(shù)瑟押,return 會返回新的數(shù)組
var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);
function myFunction(value) {
return value * 2;
}
- Array.filter() 值:返回滿足條件的數(shù)組
方法創(chuàng)建一個包含通過測試的數(shù)組元素的新數(shù)組概作。
var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
- Array.every 值返回true或者false
檢查所有的數(shù)組值是否通過測試,
var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.every(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
- Array.some 值:返回true false 有一個滿足就會返回true
檢查數(shù)組值是否通過了測試
var numbers = [45, 4, 9, 16, 25];
var someOver18 = numbers.some(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
- Array.find()
方法返回通過測試函數(shù)的第一個數(shù)組元素的值薄湿。
var numbers = [4, 9, 16, 25, 29];
var first = numbers.find(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
- Array.findIndex():
傳入一個回調(diào)函數(shù),找到數(shù)組中符合當前搜索規(guī)則的第一個元素枣抱,返回它的下標,終止搜索
const arr = [1, "2", 3, 3, "2"]
console.log(arr.findIndex(n => typeof n === "number")) // 0
- Array.indexOf()
indexOf() 方法在數(shù)組中搜索元素值并返回其位置辆床。
從0位置開始 從0開始計數(shù)
var fruits = ["Apple", "Orange", "Apple", "Mango"];
var a = fruits.indexOf("Apple");
- Array.lastIndexOf()
var fruits = ["Apple", "Orange", "Apple", "Mango"];
var a = fruits.lastIndexOf("Apple");
- Array.reduce()
應(yīng)用:
去重
let arr = [1, 2, 2, 4, null, null].reduce((accumulator, current) => {
return accumulator.includes(current) ? accumulator : accumulator.concat(current);
}, []);
數(shù)組扁平化
數(shù)組求和
計算出現(xiàn)的次數(shù)
let names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
let nameNum = names.reduce((pre,cur)=>{
if(cur in pre){
pre[cur]++
}else{
pre[cur] = 1
}
return pre
},{})
console.log(nameNum); //{Alice: 2, Bob: 1, Tiff: 1, Bruce: 1}
- Array.reduceRight()
相同:
和其它函數(shù)不同之處在于第一個值是上一次便利的值
不同:
和reduce:從左向右邊佳晶,reduceRight:從右邊向左邊
var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction);
function myFunction(total, value, index, array) {
return total + value;
}
- for.....in
let names = ['Tom','Jerry']
for(let i in names){
console.log(arr[i]);
}
- values() 返回鍵值對的鍵
//數(shù)組
const arr = ['a', 'b', 'c'];
for(let v of arr.values()) {
console.log(v)
}
//'a' 'b' 'c'
//Set
const arr = new Set(['a', 'b', 'c']);
for(let v of arr.values()) {
console.log(v)
}
// 'a' 'b' 'c'
//Map
const arr = new Map();
arr.set('a', 'a');
arr.set('b', 'b');
for(let v of arr.values()) {
console.log(v)
}
// 'a' 'b'
keys 返回鍵值對的 鍵值
//數(shù)組
const arr = ['a', 'b', 'c'];
for(let v of arr.keys()) {
console.log(v)
}
// 0 1 2
//Set
const arr = new Set(['a', 'b', 'c']);
for(let v of arr.keys()) {
console.log(v)
}
// 'a' 'b' 'c'
//Map
const arr = new Map();
arr.set('a', 'a');
arr.set('b', 'b');
for(let v of arr.keys()) {
console.log(v)
}
// 'a' 'b'
- includes
判斷數(shù)組中是否存在該元素,參數(shù):查找的值讼载、起始位置轿秧,可以替換 ES5 時代的 indexOf 判斷方式。indexOf 判斷元素是否為 NaN咨堤,會判斷錯誤菇篡。
var a = [1, 2, 3];
a.includes(2); // true
a.includes(4); // false