(1)flatten的用法
將一個嵌套多層的數(shù)組 array(數(shù)組) (嵌套可以是任何層數(shù))轉(zhuǎn)換為只有一層的數(shù)組矾克,數(shù)組中元素僅基本類型的元素或數(shù)組.
var flatten = function(input, shallow, strict, startIndex) {
// ...
};
第一個參數(shù) input 即為需要展開的數(shù)組,所以 flatten 方法中傳入的第一個參數(shù)肯定是數(shù)組(或者 arguments)掀亩;
第二個參數(shù) shallow 是個布爾值卢鹦,如果為 false悄泥,則表示數(shù)組是深度展開虏冻,如果為 true 則表示只展開一層;
第三個元素strict 也是個布爾值弹囚,當(dāng) shallow 為 true 并且 strict 也為 true 時厨相,能過濾 input 參數(shù)元素中的非數(shù)組元素;
第四個參數(shù)表示 input 展開的起始位置鸥鹉,即從 input 數(shù)組中第幾個元素開始展開蛮穿。
在使用flatten的時候,應(yīng)該先安裝
npm install array-flatten --save
使用的時候記著
var flatten = require('array-flatten')
例如:
var flatten = require('array-flatten')
var arr=[1, [2, [3, [4, [5], 6], 7], 8], 9];
var result= flatten(arr);
console.log(result);
結(jié)果:
展開兩層數(shù)組
flatten.depth([1, [2, [3, [4, [5], 6], 7], 8], 9], 2)
//=> [1, 2, 3, [4, [5], 6], 7, 8, 9]
(2)map()方法的使用
map()方法返回一個新數(shù)組毁渗,數(shù)組中的元素為原始數(shù)組元素調(diào)用函數(shù)處理的后值践磅。
map()方法按照原始數(shù)組元素順序依次處理元素。
注:
map不會對空數(shù)組進(jìn)行檢測
map不會改變原始數(shù)組
arr.map(function(currentValue灸异,index府适,arr),thisValue)
參數(shù)說明
function(currentValue,index,arr)
必須,函數(shù)肺樟,數(shù)組中的每個元素都會執(zhí)行這個函數(shù)函數(shù)參數(shù)
函數(shù)參數(shù)
currentValue 必須 當(dāng)前元素值
index 可選 當(dāng)前元素的索引值
arr 可選 當(dāng)前元素屬于的數(shù)組對象檐春。
thisValue:需要處理的映射的值溉躲,可省略憎账。
例:
數(shù)組中的每個數(shù)乘2;
var arr=[1,2,3,4,5];
var result=arr.map(function(element,index,arr){
return element*2;
});
console.log(result);
或用thisValue
var arr=[1,2,3,4,5];
var thisValue=2;
var result=arr.map(function(element,index,arr){
return element*thisValue;
},thisValue);
console.log(result);
結(jié)果:
(3)reduce總結(jié)
reduce() 方法接收一個函數(shù)作為累加器蜜葱,數(shù)組中的每個值(從左到右)開始縮減蹦狂,最終為一個值誓篱。
arr.reduce(callback[, initialValue])
callback(一個在數(shù)組中每一項(xiàng)上調(diào)用的函數(shù),接受四個函數(shù):){
previousValue(上一次調(diào)用回調(diào)函數(shù)時的返回值凯楔,或者初始值)
currentValue(當(dāng)前正在處理的數(shù)組元素)
currentIndex(當(dāng)前正在處理的數(shù)組元素下標(biāo))
array(調(diào)用reduce()方法的數(shù)組)
}
initialValue(可選的初始值窜骄。作為第一次調(diào)用回調(diào)函數(shù)時傳給previousValue的值)
對數(shù)組求和
var arr=[1,2,3,5];
sum=0;
sum=arr.reduce(function(x,y){
return x+y;
});
或
var arr=[1,2,3,5];
var sum=arr.reduce(function(x,y){
return x+y;
},0);
求最大值
var max=arr.reduce(function(x,y){
return x>y?x:y;
});