【问题标题】:Convert array of objects to array of arrays将对象数组转换为数组数组
【发布时间】:2018-10-13 01:54:57
【问题描述】:
var json = [{one: "text1", two: "text2", three: 3, four: 4},
            {one: "text3", two: "text4", three: 5, four: 6},
            {one: "text5", two: "text7", three: 8, four: 9}]

如何将上面的对象数组转换成下面的数组?

var array = [["text1", "text2", 3, 4], 
             ["text3", "text4", 5, 6], 
             ["text5", "text7", 8, 9]]

是否有 ES2015 函数可以帮助轻松转换它?如果不是 for 循环可能会这样做。

【问题讨论】:

  • 你拥有的是一个对象数组,而不是 JSON。

标签: javascript ecmascript-6 javascript-objects


【解决方案1】:

您可以使用mapObject.values

let array = json.map(obj => Object.values(obj));

【讨论】:

  • Object.values 不是 ES6。
【解决方案2】:

如果您需要明确指定顺序,您可以对每个项目进行解构和映射:

var array = json.map(({ one, two, three, four }) => ([one, two, three, four]))

这也适用于原始对象中的无序键,例如:

var json = [{ two: "text2", one: "text1", three: 3, four: 4 },
            { one: "text3", three: 5, two: "text4", four: 6 },
            { four: 9, two: "text7", three: 8, one: "text5" }]

【讨论】:

    【解决方案3】:

    您可以直接使用Object.values 作为回调,ES 2017 提供此功能

    var array = [{ one: "text1", two: "text2", three: 3, four: 4 }, { one: "text3", two: "text4", three: 5, four: 6 }, { one: "text5", two: "text7", three: 8, four: 9 }],
        result = array.map(Object.values);
                    
    console.log(result);

    经典方法

    var array = [{ one: "text1", two: "text2", three: 3, four: 4 }, { one: "text3", two: "text4", three: 5, four: 6 }, { one: "text5", two: "text7", three: 8, four: 9 }],
        result = array.map(o => Object.keys(o).map(k => o[k]));
                    
    console.log(result);

    【讨论】:

    • 这里相同:Object.values 不是 ES6。可能很好用,但由于 OP 只提到 ES2015,至少值得指出。
    • Object.values 更适合我!谢谢
    【解决方案4】:

    你也可以使用这个代码sn -p -

    function convertObjCollToArrColl(json) {
        for (var i = 0, array = []; i < json.length; i++) {
            var el = json[i];
            array.push([el.one, el.two, el.three, el.four]);
        }
        
        return array;
    }
    
    convertObjCollToArrColl(json);
    

    【讨论】:

      猜你喜欢
      • 2019-04-13
      • 2018-11-08
      • 2021-05-03
      • 2018-12-04
      • 2021-06-16
      相关资源
      最近更新 更多