1. 程式人生 > >陣列的幾個操作filter,map,includes,find,some,every,reduce

陣列的幾個操作filter,map,includes,find,some,every,reduce

let arr=[1,2,3,4,5,55];

filter(篩選)

let newArr=arr.filter(function (i) {
   return i>2&&i<5;
});

返回新陣列,不會改變原陣列。

map(對映)

let newArrs=arr.map(function (i) {
    return `<li>${i}</li>`;
});
console.log(newArrs.join(''));

結果:<li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>55</li>


返回新陣列,不會改變原陣列。

includes

console.log(arr.includes(4));
返回boolean值。

find

let newarr=arr.find(function (item,index) {
    return item.toString().indexOf(5)>-1;
});

結果:5
不會改變陣列,返回找到的那一項,回撥函式中返回true表示找到了,找到後就停止迴圈。若迴圈完畢沒找到,則返回undefined。

some

let newarr=arr.some(function (item,index) {
    return
item.toString().indexOf(5)>-1; });

結果:true
找true,找到true後停止並返回true,找不到返回false。

every

let newarr=arr.every(function (item,index) {
    return item.toString().indexOf(5)>-1;
});

結果:false
找false,找到false後停止並返回false。

reduce

reduce() 方法接收一個函式作為累加器,陣列中的每個值(從左到右)開始縮減,最終計算為一個值。
reduce() 可以作為一個高階函式,用於函式的 compose。
注意: reduce() 對於空陣列是不會執行回撥函式的。

let sum=[0,{price:30,count:2},{price:30,count:3},{price:30,count:4}];
let all=sum.reduce(function (total,currentValue,currentIndex,arr) {
    return total+currentValue.price*currentValue.count;
});
let sum2=[{price:30,count:2},{price:30,count:3},{price:30,count:4}];
let all2=sum2.reduce(function (total,currentValue,currentIndex,arr) {
    return total+currentValue.price*currentValue.count;
},0);//預設指定第一個total
console.log(all);
console.log(all2);

結果:

270
270

引數介紹:
total:必需。初始值, 或者計算結束後的返回值。
currentValue:必需。當前元素
currentIndex:可選。當前元素的索引
arr:可選。當前元素所屬的陣列物件。