JS / ES6:对象到数组的转换

时间:2016-11-23 00:22:22

标签: javascript arrays ecmascript-6

我的一个节点js库正在以错误的格式返回我需要的一些数据,如下所示:

{"a":["1","2"],"b":["3","4"],"c":["5","6"]}

(请注意,值不重要) 但是我需要以某种方式循环这个数组,我发现我的B对于我的A有一定的价值(在这种情况下例如' 2',我需要' 4')到目前为止,我的程序的所有其他部分都使用这样的数组:

[{"a":"1", "b":"3", "c":"5"}, {"a":"2", "b":"4", "c":"6"}]

这将是我的首选方法。

另请注意,a中的数据量始终与b和c相同,但本身也是可变的。

那么"最好的"在ES6 / JS中完成此任务的方法(在我开始搞乱for循环之前)?

1 个答案:

答案 0 :(得分:2)

如果您想要转换像

这样的对象
{"a":["1","2"],"b":["3","4"],"c":["5","6"]}

进入像

这样的数组
[{"a":"1","b":"3","c":"5"},{"a":"2","b":"4","c":"6"}]

这样的事情是我能想到的最简单的方式

function formatData (data) {
  return Object.keys(data).reduce((arr, key) => {
    data[key].forEach((value, i) => {
     const iObj = arr[i] || (arr[i] = {});
     iObj[key] = value;
    });
    return arr;
  }, []);
}