Каков наилучший способ (разрешенный ES6) для извлечения значений из массива и преобразования их в строку? - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь взять массив так:

location: [
  {Id: "000-000", Name: "Foo"}, 
  {Id: "000-001", Name: "Bar"}, 
  ..etc
]

Какой самый эффективный / чистый способ извлечь идентификаторы и объединить их в одну строку, добавив перед каждым значением статическую строку ("& myId =")?

Вкратце, какой самый эффективный способ превратить вышеуказанный массив в следующий конечный результат:

&myId=000-000&myId=000-001

Как указано в заголовке, ES6 приемлемо использовать, если он предлагает лучший метод для достижения этой цели.

Ответы [ 2 ]

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

Использование map и join кажется достаточно эффективным.

const staticString = "&myId=",
  locationArray = [
    {
      Id: "000-000",
      Name: "Foo"
    },
    {
      Id: "000-001",
      Name: "Bar"
    }
  ],
  result = locationArray.map(({Id}) => staticString + Id).join("");

// or
// result = staticString + locationArray.map(({Id}) => Id).join(staticString);

console.log(result);

В альтернативном варианте первый staticString также можно изменить на "?myId=", так как это выглядит как параметры запроса.

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

Используйте reduce, извлекая каждый Id:

const location2 = [{Id: "000-000", Name: "Foo"}, {Id: "000-001", Name: "Bar"}];
console.log(
  location2.reduce((a, { Id }) => `${a}&myId=${Id}`, '')
);

Хотя это довольно чисто и требует итерации по каждому элементу один раз, с точки зрения эффективность , циклы for еще более производительны, если в массиве огромное количество элементов:

const location2 = [{Id: "000-000", Name: "Foo"}, {Id: "000-001", Name: "Bar"}];
let output = '';
for (let i = 0, { length } = location2; i < length; i++) {
  output += '&myId=' + location2[i].Id;
}
console.log(output);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...