(1)flatten的用法
将一个嵌套多层的数组 array(数组) (嵌套可以是任何层数)转换为只有一层的数组,数组中元素仅基本类型的元素或数组.
var flatten = function(input, shallow, strict, startIndex) {
// ...
};
第一个参数 input 即为需要展开的数组,所以 flatten 方法中传入的第一个参数肯定是数组(或者 arguments);
第二个参数 shallow 是个布尔值,如果为 false,则表示数组是深度展开,如果为 true 则表示只展开一层;
第三个元素strict 也是个布尔值,当 shallow 为 true 并且 strict 也为 true 时,能过滤 input 参数元素中的非数组元素;
第四个参数表示 input 展开的起始位置,即从 input 数组中第几个元素开始展开。
在使用flatten的时候,应该先安装
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);
结果:
2018-04-02 21-56-41屏幕截图.png
展开两层数组
flatten.depth([1, [2, [3, [4, [5], 6], 7], 8], 9], 2)
//=> [1, 2, 3, [4, [5], 6], 7, 8, 9]
(2)map()方法的使用
map()方法返回一个新数组,数组中的元素为原始数组元素调用函数处理的后值。
map()方法按照原始数组元素顺序依次处理元素。
注:
map不会对空数组进行检测
map不会改变原始数组
arr.map(function(currentValue,index,arr),thisValue)
参数说明
function(currentValue,index,arr)
必须,函数,数组中的每个元素都会执行这个函数函数参数
函数参数
currentValue 必须 当前元素值
index 可选 当前元素的索引值
arr 可选 当前元素属于的数组对象。
thisValue:需要处理的映射的值,可省略。
例:
数组中的每个数乘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);
结果:
2018-04-02 22-18-33屏幕截图.png
(3)reduce总结
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终为一个值。
arr.reduce(callback[, initialValue])
callback(一个在数组中每一项上调用的函数,接受四个函数:){
previousValue(上一次调用回调函数时的返回值,或者初始值)
currentValue(当前正在处理的数组元素)
currentIndex(当前正在处理的数组元素下标)
array(调用reduce()方法的数组)
}
initialValue(可选的初始值。作为第一次调用回调函数时传给previousValue的值)
对数组求和
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;
});
网友评论