a.二维数组转为一维数组:
i.reduce() 方法
接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。对空数组是不会执行回调函数的
语法:array.reduce(function(total,currentValuue,currentIndex,arr),initiaValue)
let arr = [[1, 4, 5, 6],[8, 4, 7, 6],[1, 5, 10, 47]];let arr1 = arr.reduce((total, currentValue) => {return total.concat(currentValue);});console.log(arr1);
ii.map()
map()
方法定义在JavaScript的Array
中,返回一个新的数组,新返回数组中的每个元素为原始数组的每一个元素分别调用map中的回调函数处理后的值
注意:
不会对空数组进行检测不会改变原始数组(返回新数组)不会为数组中缺少的元素调用回调函数除数组对象外,map()
可由具有length属性且具有已按数字编制索引名的任何对象使用(如字符串对象)
语法:
array.map(function(currentValue, index, arr), thisIndex)
currentValue
:必须。当前元素的的值。index
:可选。当前元素的索引。arr
:可选。当前元素属于的数组对象。thisValue
:可选。对象作为该执行回调时使用,传递给函数,用作"this
"的值
let arr = [[1, 4, 5, 6],[8, 4, 7, 6],[1, 5, 10, 47]];function flatten(arr) {/*** ...arr ==> 等价于 [1, 4, 5, 6] [8, 4, 7, 6] [1, 5, 10, 47]* currentValue => 等价于 上面的一个个一维数组*/return [].concat(...arr.map(currentValue => Array.isArray(currentValue) ? flatten(currentValue) : currentValue))}var arr2 = flatten(arr);console.log(arr2);
iii.apply()
Function.apply(obj,args)方法能接收两个参数
obj:这个对象将代替Function类里this对象
args:这个是数组,它将作为参数传给Function(args-->arguments)
可以将一个数组默认的转换为一个参数列表:[param1,param2,param3] 转换为 param1,param2,param3
let arr = [[1, 4, 5, 6],[8, 4, 7, 6],[1, 5, 10, 47]];var arr2 = [].concat.apply([], arr);console.log(arr2);
iv.split()
通过将数组转变成字符串,利用str.split(',')
实现
var arr = [[1, 4, 5, 6],[8, 4, 7, 6],[1, 5, 10, 47]];var arr1 = (arr + '').split(',');// var arr1 = arr.toString().split(',');// var arr1 = arr.join().split(',');console.log(arr1);