Bac*_*hus 2 javascript jagged-arrays
var flatten = function (array){
// TODO: Program me
var newArray = [];
for(var i = 0; i<array.length; i++) {
newArray.push(array[i]);
}
return newArray;
}
Run Code Online (Sandbox Code Playgroud)
这是结果除外:
flatten([1,2,3]) // => [1,2,3]
flatten([[1,2,3],["a","b","c"],[1,2,3]]) // => [1,2,3,"a","b","c",1,2,3]
flatten([[[1,2,3]]]) // => [[1,2,3]]
Test result:
Test Passed
Test Passed
Test Failed: Value is not what was expected
Run Code Online (Sandbox Code Playgroud)
诀窍在于,如果输入数组的一个元素本身就是一个数组,那么你应该将元素的扁平项"连接"到输入数组中,而不是推送整个数组.
这是一个使用"reduce"和"Array.isArray(...)"的解决方案,这些解决方案仅适用于支持ECMAScript第5.1版后期规范的较新浏览器:
function flatten(array) {
return array.reduce(function(memo, el) {
var items = Array.isArray(el) ? flatten(el) : [el];
return memo.concat(items);
}, []);
}
flatten([1,2,3]) // => [1,2,3]
flatten([[1,2,3],["a","b","c"],[1,2,3]]) // => [1,2,3,"a","b","c",1,2,3]
flatten([[[1,2,3]]]) // => [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4236 次 |
最近记录: |