ES6, вернуть список строк, разделенных запятой массивом объектов - PullRequest
1 голос
/ 25 апреля 2019

У меня есть несколько объектов

var officers = [
  { id: 20, name: 'Captain Piett' },
  { id: 24, name: 'General Veers' },
  { id: 56, name: 'Admiral Ozzel' },
  { id: 88, name: 'Commander Jerjerrod' }
];

Мне нужно вернуть "20", "24", "56", "88"

Теперь я использую

const ids = officers.map(officer => officer.id);

но это, конечно, вернет мне массив.

Какой самый эффективный способ?

Ответы [ 3 ]

4 голосов
/ 25 апреля 2019

Вы можете использовать map(), чтобы вернуть массив строк с "", а затем использовать join()

var officers = [
  { id: 20, name: 'Captain Piett' },
  { id: 24, name: 'General Veers' },
  { id: 56, name: 'Admiral Ozzel' },
  { id: 88, name: 'Commander Jerjerrod' }
];

const res = officers.map(x => `"${x.id}"`).join()

console.log(res)
0 голосов
/ 25 апреля 2019

Какой самый эффективный способ?

Array.map каждый раз создает новую функцию и вызывает ее, что неэффективно.

Самый эффективный способ - этоиспользуйте обычные циклы for:

var res = '';
for(let {id} in officers){ 
 res+=....
}

Но теперь вы будете каждый раз создавать новую строку (res+=...).Это абсолютно нормально, если вам не нужно обрабатывать много строк, но в этом случае вы можете переключиться на массивы и объединить их в строку в конце.

0 голосов
/ 25 апреля 2019

Вы можете заключить в кавычки на карте и затем вызвать Array.join.

const ids = officers.map(officer => '"' + officer.id + '"').join();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...