【问题标题】:Javascript Object Map (flatten)Javascript 对象映射(展平)
【发布时间】:2016-06-27 11:43:44
【问题描述】:

您好,我有一个使用 JSON.Stringify 输出到此的对象

{"0":["test1","ttttt","","","","","","","",""],"1":["test2","ghjgjhgjh","","","","","","","",""]}

我想要这样的输出。

[["test1","ttttt","","","","","","","",""],["test2","ghjgjhgjh","","","","","","","",""]]

我已经尝试使用 .map 删除“0”和“1”

var itemjson = $.map(cleanedGridData, function (n) {
        return n;
    });

然而,这给出了(下面)的输出,它已经变平了。

["test1", "ttttt", "", "", "", "", "", "", "", "", "test2", "ghjgjhgjh", "", "", "", "", "", "", "", ""]

【问题讨论】:

    标签: javascript object dictionary flatten


    【解决方案1】:

    您可以使用它来提取值:

    var res = {"0":["test1","ttttt","","","","","","","",""],"1":["test2","ghjgjhgjh","","","","","","","",""]}
    Object.keys(res).map(function(key) {
        return res[key];
    });
    

    Object.keys 将列出初始对象中的所有键。然后,您可以使用 map 遍历这些键并在该函数中提取值。

    【讨论】:

    • 我确实喜欢不需要 jquery 的解决方案 :)
    【解决方案2】:

    更改您的 return 语句,将 n 放在另一个数组中。

    return [n];
    

    这是因为 jQuery 的 $.map 将你返回的数组展平成结果,所以你需要将它包裹在一个外部数组中。

    要么这样,要么只使用for in 循环。

    var itemjson = [];
    for (var key in cleanedGridData) {
      itemjson.push(cleanedGridData[key]);
    }
    

    【讨论】:

      【解决方案3】:

      一旦您的环境(即对于您想要支持的所有浏览器)有Object.values(和spread operator)可用,您就可以使用

      [...Object.values(cleanedGridData)]
      

      【讨论】:

        猜你喜欢
        • 2022-12-12
        • 1970-01-01
        • 1970-01-01
        • 2021-11-24
        • 1970-01-01
        • 2014-12-03
        • 2020-01-23
        • 1970-01-01
        • 2021-07-09
        相关资源
        最近更新 更多