为什么要在现实世界中展平数组?
在各种设置中我都遇到了这个问题。我在网上搜索,但找不到我的问题的答案。
function steamrollArray(arr) {
let flat = [];
for(let i=0; i<arr.length; i++){
let toFlatten = arr[i];
let element = toFlatten;
if(Array.isArray(toFlatten) ){
element = steamrollArray(toFlatten);
}
flat = flat.concat(element);
}
return flat;
}
答案 0 :(得分:0)
我致力于在开源代码中使用的两个现实世界中的列表平化应用程序:
(1)映射,其中某些结果元素可能未定义或为null,我们不希望它们出现在列表中。通过使用flatMap,我们可以将这些元素作为空列表返回,并且不包含这些元素(有点像懒惰的人的减少:)。
// As an example,
// list only the odd numbers
console.log(
steamrollArray(
[1,2,3].map(e => e & 1 ? e : [])));
(2)我们使用以下格式的数据:
{key: value, key: value ...}
每个值都是一个列表,在某个地方我们需要使用每个value
中所有元素的组合列表。
var a = {key1: [1, 2], key2: [3, 4]}
console.log(
steamrollArray(Object.values(a)));