首先,对不起,如果您发现问题令人困惑。 基本上,我有一个这样的对象:
[{"6":6.5},{"4":4.2},{"6":6.3}]
我想做的是删除重复的键,但保留其中的值,并将它们全部推入一个唯一的键(作为数组)。像这样:
[{"6":[6.5, 6.3]}, {"4": 4.2}]
有人可以提出解决方案吗?
答案 0 :(得分:0)
.reduce()
是您想要的:
var data = [{"6":6.5},{"4":4.2},{"6":6.3}];
var res = data.reduce((rv, obj) => {
var key = Object.keys(obj)[0];
rv[key] = rv[key] || [];
rv[key].push(obj[key]);
return rv;
}, {});
console.log(res);
注意::此操作始终以数组格式返回数据(即使有一个值)。如果您要查找指定的确切格式,则只需添加更多逻辑,如下所示(尽管我不推荐这种方法,因为它会增加更多的复杂性。)
var data = [{"6":6.5},{"4":4.2},{"6":6.3}];
var res = data.reduce((rv, obj) => {
var key = Object.keys(obj)[0];
if (Array.isArray(rv[key])) { // Already is an array
rv[key].push(obj[key]);
} else if (rv[key] !== undefined) { // Has a value. Convert to array
rv[key] = [rv[key], obj[key]];
} else { // Haven't seen this key yet. Set the value
rv[key] = obj[key];
}
return rv;
}, {});
console.log(res);