Как объединить/добавить строки в объект массива

#javascript #angular #typescript

Вопрос:

У меня есть массив, внутри которого есть объекты:

 [
{pointID: 1, pointName: "One" },
{pointID: 2, pointName: "Two" },
{pointID: 3, pointName: "Three" }
]
 

Я хотел бы соединить все строки, т. е. Имя точки, следующим образом : «Один-два-три».

Любая помощь будет признательна. Спасибо.

Правка 1:

Это то, что я пробовал до сих пор:

 this.viaPoints.forEach(x=> {      
      var splitted = x.pointName.split(" ");    
      console.log('I5: ',splitted[0].join("-"));
     });
 

Причина, по которой я разделился, заключается в том, что в строке несколько раз будут дополнительные символы, такие как «Один — А». Поэтому я использовал разделение, чтобы удалить лишнее

Правка 2: В моем случае это помогло, как я уже упоминал выше, удалить лишние символы и строки:

 var permittedValues1 = this.viaPoints.map(value => value.pointName.split(" ")[0]).join("-") ;
 

Комментарии:

1. Что вы пробовали до сих пор ?? Пожалуйста, всегда упоминайте о том, что вы уже пытались сделать !! «У меня проблема с программированием, решите ее за меня!!» — это не то, как предполагается использовать SO.

Ответ №1:

Вы также можете использовать .map и .join функциональные возможности. Здесь .map будут приниматься значения, основанные на имени ключевой точки, и .join используется для возврата массива в виде строки. Элементы будут разделены указанным разделителем (здесь «-«).

 let array = [
      {pointID: 1, pointName: "One" },
      {pointID: 2, pointName: "Two" },
      {pointID: 3, pointName: "Three" }
      ];
var permittedValues = array.map(value => value.pointName).join("-") ;
 

Ответ №2:

Вы можете использовать Array.prototype.reduce функцию для возврата массива, содержащего pointName для каждого объекта в массиве, и объединить все значения возвращаемого массива - .

 let data = [
  {pointID: 1, pointName: "One" },
  {pointID: 2, pointName: "Two" },
  {pointID: 3, pointName: "Three" }
]

let result = data.reduce((accumulator, current) => {
    return accumulator.concat(current.pointName);
}, []).join('-');

console.log(result); 

Комментарии:

1. .reduce(... => accumulator.concat(...)) это именно то, что .map делает.