展平阵列的实际应用是什么?

时间:2019-01-01 03:33:02

标签: javascript algorithm flatten

为什么要在现实世界中展平数组?

在各种设置中我都遇到了这个问题。我在网上搜索,但找不到我的问题的答案。

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;
}

1 个答案:

答案 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)));