js数组从一维降到二维
首先大家需要了解一下这两个方法
arr作为apply方法的第二个参数,本身是一个数组,数组中的每一个元素(还是数组,即二维数组的第二维)会被作为参数依次传入到concat中,效果等同于[ ].concat([1,2], [3,4], [5,6])。
利用apply方法,我们将单重循环优化为了一行代码
var myArr = [1,2,3,[4,5,6]]
var reduce = function(arr){
return Array.prototype.concat.apply([], arr)
}
console.log(reduce(myArr))//[1,2,3,4,5,6]
js数组从多维降到一维
这里就会用到递归,递归的要点有两个一个是递归条件,二是结束条件,此时有一数组arr
var arr = [1, 2, [4, 5, 6, ['a', 'b', 'c', ['aa', 'bb', 'cc', [777, 555, 999]]]]]
循环遍历此数组,当数组的元素为数组时,则进行递归,如果不为数组则将数组元素push到一个新数组.
var arr = [1, 2, [4, 5, 6, ['a', 'b', 'c', ['aa', 'bb', 'cc', [777, 555, 999]]]]]
var newArr = []
var reduceArr = function (arr) {
for (var i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
reduceArr(arr[i])
} else {
newArr.push(arr[i])
}
}
}
reduceArr(arr)
console.log(newArr)
这样我们就完成了多维降为一维了。