javascript - 扁平化数组的实际应用是什么?
问题描述
为什么需要在现实世界的上下文中展平数组?
我在各种设置中都遇到了这个问题。我在网上搜索,但我找不到我的问题的答案。
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) 一些结果元素可能未定义或为空且我们不希望它们出现在列表中的映射。通过使用 flatMap,我们可以将这些元素作为空列表返回,并且它们不会被包含在内(有点像懒人的 reduce :)。
// As an example,
// list only the odd numbers
console.log(
steamrollArray(
[1,2,3].map(e => e & 1 ? e : [])));
(2) 我们有这种格式的数据:
{key: value, key: value ...}
其中每个值都是一个列表,在某个地方我们需要使用 each 中所有元素的组合列表value
。
var a = {key1: [1, 2], key2: [3, 4]}
console.log(
steamrollArray(Object.values(a)));
推荐阅读
- java - 在 Clojure 或 Java 中将一组 n 个元素划分为非分集
- python - Keras 卷积神经网络维度问题
- tfs - TFS 在视图中按迭代自动排序工作项
- arrays - 在 perl 中识别单词
- ibm-cloud-infrastructure - softlayer裸机创建后可以更改其默认VLAN吗?
- java - 为什么返回值与我尝试调用的值不同?
- stata - 如何通过 Var_a 和 Var_b 获得 Var_c 的总和?
- laravel - 如何在信使系统的雄辩查询 JSON 输出中识别经过身份验证的用户?
- c# - 不了解如何在 Gremlin.net 中使用 Tree()
- mips - MIPS 阶乘计算器返回长数可能是寄存器号?