因为找不到任何解决方案,有没有办法做?
我有一个包含对象的数组,该数组中的每个对象都有一个x和y位置以及一个文本字段,如下所示:
[{x: 100, y: 100, text: "hello"},
{x: 100, y: 100, text: "this is another message"},
{x: 50, y: 25, text: "message on another place"}]
现在,我尝试获取一个新的对象列表,其中每个位置都是唯一的,并且所有消息将是一个新的文本数组。
所以我尝试获得最终清单,如:
[{x: 100, y: 100, text: ["hello", "this is another message"]},
{x: 50, y: 25, text: [message on another place]}]
我尝试了几种在互联网上找不到的方法。
答案 0 :(得分:2)
您可以使用reduce
将x和y的串联值作为键将数组分组为一个对象。使用Object.values
将对象转换为数组。
let arr = [{"x":100,"y":100,"text":"hello"},{"x":100,"y":100,"text":"this is another message"},{"x":50,"y":25,"text":"message on another place"}]
let result = Object.values(arr.reduce((c, {x,y,text}) => {
let k = x + '_' + y;
c[k] = c[k] || {x,y,text: []};
c[k].text.push(text);
return c;
}, {}));
console.log(result);