我的一个节点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;
}, []);
}