使用相同的键合并数组中的 JavaScript 对象 [英] Merge JavaScript objects in array with same key
本文介绍了使用相同的键合并数组中的 JavaScript 对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
从共享一个键的 JavaScript 对象合并数组内容的最佳方法是什么?
What is the best way to merge array contents from JavaScript objects sharing a key in common?
下例中的array
如何重组为output
?在这里,所有 value
键(无论是否为数组)都合并到共享相同 name
键的所有对象中.
How can array
in the example below be reorganized into output
? Here, all value
keys (whether an array or not) are merged into all objects sharing the same name
key.
var array = [
{
name: "foo1",
value: "val1"
}, {
name: "foo1",
value: [
"val2",
"val3"
]
}, {
name: "foo2",
value: "val4"
}
];
var output = [
{
name: "foo1",
value: [
"val1",
"val2",
"val3"
]
}, {
name: "foo2",
value: [
"val4"
]
}
];
推荐答案
这里有一个选项:-
var array = [{
name: "foo1",
value: "val1"
}, {
name: "foo1",
value: ["val2", "val3"]
}, {
name: "foo2",
value: "val4"
}];
var output = [];
array.forEach(function(item) {
var existing = output.filter(function(v, i) {
return v.name == item.name;
});
if (existing.length) {
var existingIndex = output.indexOf(existing[0]);
output[existingIndex].value = output[existingIndex].value.concat(item.value);
} else {
if (typeof item.value == 'string')
item.value = [item.value];
output.push(item);
}
});
console.dir(output);
这篇关于使用相同的键合并数组中的 JavaScript 对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文