我正在尝试编写一个函数来展平数组.我有部分功能正常工作,另一半我需要帮助.
flatten: function(anyArray,singleLevel) {
if (singleLevel == true) {
flatArray = Array.prototype.concat.apply([],anyArray);
return flatArray;
}
flatArray = Array.prototype.concat.apply([],anyArray);
if (flatArray.length != anyArray.length) {
flatArray = someObject.array.flatten(flatArray);
}
return flatArray;
}
如果我打字
.flatten([[[1],[1,2,3,[4,5],4],[2,3]]],true);
我希望它只展平一个级别:
[[1],3]]
最佳答案
concat
array method期望一个或多个数组作为参数,其元素将被追加:
[1].concat([2,3],[4]) // [1,4]
因此,如果您使用的是apply
,那将会推平另一个级别:
[].concat.apply([1],[[2],[3]]) // === [1].concat([2],[3])