优化 JavaScript 中嵌套 json 个对象数组的扁平化

Optmize flattening of an array of nested json objects in JavaScript

应该有一个对象数组,比如

[
     {
        "key_set1": {
            int_val: 3,
            arr_val: [
                1,
                3,
                4
            ]
        }
    },
    {
        "key_set2": {
            string_val: "foo"
        }
    }
  ]

我想将内部对象键展平到一个新的根对象以得到最后

{
    "key_set1": {
        "int_val": 3,
        "arr_val": [
            1,
            3,
            4
        ]
    },
    "key_set2": {
        "string_val": "foo"
    }
}

假设

我想为此使用 forEach and/or 快速迭代器 forwhile 等内置方法获得最优化的解决方案,对于 best/worst 例。

只要我没理解错,你喜欢用对象替换数组,把第一级key作为result对象的新key

var array = [{ "key_set1": { int_val: 3, arr_val: [1, 3, 4] } }, { "key_set2": { string_val: "foo" } }],
    object = {};

array.forEach(function (a) {
    var key = Object.keys(a)[0];
    object[key] = a[key];
});

console.log(object);

如果你 "want to get this optimized at its best" - 你不应该在你的情况下使用 Array.map 因为它 returns 一个新数组。
您只需要快速遍历 list 数组并填充新的 flattened 对象。
考虑以下 "optimized" 解决方案:

var flattened = {}, len = list.length;
while (len--) {
    Object.keys(list[len]).forEach((k) => (flattened[k] = list[len][k]));
}
console.log(JSON.stringify(flattened, 0, 4));

输出:

{
    "key_set2": {
        "string_val": "foo"
    },
    "key_set1": {
        "int_val": 3,
        "arr_val": [
            1,
            3,
            4
        ]
    }
}