我在一个长数组中有几个javascript对象,例如:
[{"name": "bob", "values": {"A": 1, "B": 2, "C": 3}},
{"name": "ted", "values": {"A": 4, "B": 5, "C": 6}},
...
]
将此数组转换为以下内容的简洁快捷方式是什么:
[{"name": "bob", "A": 1},
{"name": "bob", "B": 2},
{"name": "bob", "C": 3},
{"name": "ted", "A": 4},
{"name": "ted", "B": 5},
{"name": "ted", "C": 6},
...
]
我对javascript有点新,我对"对"感兴趣如何处理这项任务。
答案 0 :(得分:1)
通过数组迭代(a.k.a。" loop"),并在每次迭代中迭代“'值”'包含在其中的对象。
var from = [
{"name": "bob", "values": {"A": 1, "B": 2, "C": 3}},
{"name": "ted", "values": {"A": 4, "B": 5, "C": 6}}
],
to = [],
i, person, valueKey, newObj;
for (i = 0; i < from.length; i++) {
person = from[i];
for (valueKey in person.values) {
newObj = {};
newObj.name = person.name;
newObj[valueKey] = person.values[valueKey];
to.push(newObj);
}
}
console.log(to);
答案 1 :(得分:1)
使用LoDash
,您可以执行以下操作:
var result = _.transform(people, function(memo, person) {
var r = { name: person.name };
_.each(person.values, function(number, letter) { r[letter] = number; });
return memo.push(r);
});
这里是JSFiddle。