Как отличить список объектов - PullRequest
0 голосов
/ 25 июня 2018

Есть ли способ сделать следующее, потому что я не могу найти никакого решения.

У меня есть массив с объектами, каждый объект в этом массиве имеет позицию топора и 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]}]

Я попробовал пару подходов, найденных в интернете, но безуспешно.

1 Ответ

0 голосов
/ 25 июня 2018

Вы можете использовать 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);
...