我的一个节点js库以错误的格式返回了一些我需要的数据,像这样:

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


(请注意,值无关紧要)
但我需要以某种方式循环该数组,以便找到具有一定值的A的B(在这种情况下,例如'2',我将需要'4'),并且程序的所有其他部分到目前为止使用这样的数组:

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


这将是我的首选方法。

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

那么,在ES6 / JS中实现此目标的“最佳”方法是什么(在我开始迷惑for循环之前)?

最佳答案

如果您要变换一个像

{"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;
  }, []);
}

10-05 20:47
查看更多