JavaScript(es6)數組經常使用的方法

經常使用方法

1.forEach()數組

var data = [1,2,3,4,5];
var sum = 0;
//求和 data.forEach((item)=>{sum+=item}) //給原數組的每一個值加1 data.forEach((value,index,data)=>{data[index] = value + 1})

2.concat()  //合併多個數組,返回合併後的新數組,原數組沒有變化。函數

const array = [1,2].concat(['a', 'b'], ['name']);
// [1, 2, "a", "b", "name"]

3.filter()  //返回一個新數組,包含經過callback函數測試的全部元素。測試

var fil = [5,4,3,2,1];
smallvalues = fil.filter((x)=>{return x < 3});
console.log(smallvalues)//小於3
oddNumber = fil.filter((x,i) => x % 2 === 0);//偶數

4.map()  //返回新數組code

var a = [1,2,3], b;
b = a.map((x)=>{return x*3});
console.log(a,b)

5.every()和some()  //every()和some()方法是數組的邏輯斷定對象

var ever = [1,2,3,4,5];
var xiaoyushi = ever.every((x)=>{return x < 10})//返回true,全部的值都小於10
var evenNumber = ever.every((x)=> x % 2 === 0)//返回false,不是全部的值都是偶數
var shifouyousi = ever.some((x)=> x==4)//數組裏面有一個值等於4則返回true

6.reduce()和reduceRightblog

//reduce爲數組中的每個元素依次執行回調函數,不包括數組中被刪除或從未被賦值的元素,接受四個參數:初始值(或者上一次回調函數的返回值)
var arr = [1,2,3,4];
var qiuhe = arr.reduce((prev, cur, index, arr)=>{
//prev:上一次調用回調返回的值,或者是提供的初始值(initialValue); cur:數組中當前被處理的元素
    console.log(prev, cur, index);
    return prev + cur;
})
//實例解析initialValue參數
var arr1 = [1,2,3,4];
var qiuhe2 = arr1.reduce((prev,cur,index,arr)=>{
    console.log(prev,cur,index);
    return prev + cur;
},0)//這裏設置了初始值
console.log(arr1, qiuhe2);
//結論: 若是沒有initialValue,reduce會從索引1的地方開始執行callback方法,跳過第一個索引。若是提供initialValue,從索引0開始。

/var arr2 = [];
var qiuhe3 = arr2.reduce((prev, cur, index, arr)=>{//報錯,不能處理空數組
console.log(prev, cur, index);
return prev + cur;
})
/索引

var arr3 = [];
var qiuhe4 = arr3.reduce((prev, cur, index, arr)=>{//不會報錯,由於設置了初始值
console.log(prev, cur, index);
return prev + cur;
},0)
console.log(arr3,qiuhe4)ci

//reduce的簡單用法(求和,求乘積)
var arr4 = [1,2,3,4,5,6,7,8,9,10];
var qiuhe5 = arr4.reduce((x,y)=>{return x + y})
var mul = arr4.reduce((x,y)=>{return x * y})
var max = arr4.reduce((x,y)=>{return (x>y)?x:y})//求最大值v8

//reduce的高級用法
//1.計算數組中每一個元素出現的次數
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)get

//2.數組去重
let arr5 = [1,2,3,4,4,3,5];
let newArr = arr5.reduce((pre, cur)=>{
if(!pre.includes(cur)){
return pre.concat(cur)
}else{
return pre
}
},[])
console.log(newArr)

//3.將二維數組轉化爲一維數組
let arr6 = [[0,1],[2,3],[4,5]];
let newArr2 = arr6.reduce((pre,cur)=>{
return pre.concat(cur)
},[])
console.log(newArr2);

//4.將多維數組轉化爲一維數組
let arr7 = [[0,1],[2,3],[4,[5,6,7]]]
const newArr3 = function(arr){
return arr.reduce((pre,cur)=>{
return pre.concat(Array.isArray(cur)? newArr3(cur): cur)
},[])
}
console.log(newArr3(arr7));

//5.對象裏的屬性求和
var result = [
{
subject: 'math',
score: 10
},
{
subject: 'chinese',
score: 20
},
{
subject: 'english',
score: 30
}
];

var qiuhe6 = result.reduce((prev,cur)=>{ return cur.score + prev },0) console.log(qiuhe6)

相關文章
相關標籤/搜索