вернуть объект из карты массива - PullRequest
0 голосов
/ 13 февраля 2019

Предположим, я мог бы жестко закодировать следующее:

const data = [ { a: 0, b: 1}, {a:2,b:3},... ]

Но у меня есть данные в массиве, и я хотел бы написать что-то вроде следующего:

const data = my_arr.map((element,index) => { a:element, b:index});

Какодин выход такого типа объекта из карты массива?

Ответы [ 5 ]

0 голосов
/ 13 февраля 2019

Итак, все работает

См. Вывод:

var results = [];
[...Array(11).keys()].forEach((el) => {
  if (el % 2 === 0) {
    results.push({ a: el, b: el + 1 })
  }
})

console.log('results',results)
0 голосов
/ 13 февраля 2019

Я думаю, это то же самое

var my_arr = [...Array(5).keys()]

var result = my_arr.map((element,index) => ({ a: element, b: element + 1 }));

console.log('result', result)
0 голосов
/ 13 февраля 2019

Вы должны добавить круглые скобки вокруг возвращаемого объекта, чтобы отличить его от простого блока:

const my_arr = [1, 2, 4, 3, 4];
const data = my_arr.map((element, index) => ({ a: element, b: index }));

console.log(data);

Или вернуть его явно :

const my_arr = [1, 2, 4, 3, 4];
const data = my_arr.map((element, index) => { return { a: element, b: index }; });

console.log(data);
0 голосов
/ 13 февраля 2019

Вам просто нужно добавить круглые скобки вокруг возвращаемого литерала объекта.

const my_arr = [1,2,3,4,5];
const data = my_arr.map((element, index) => ({ a: element, b:index }));
//                                          ^                       ^    

console.log(data);

Причина в том, что правила синтаксического анализатора JavaScript предполагают, что { после => является началом тела функции.Чтобы обойти это, мы обертываем объект в () (в качестве альтернативы мы можем добавить оператор return)

Подробнее здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Returning_object_literals

0 голосов
/ 13 февраля 2019

Ах, понял это.

Анонимный объект конфликтует с операторами области видимости, поэтому вам необходимо инкапсулировать объект в блок области действия и передать оттуда объект путем возврата:

const data = my_arr.map((element,index) => { return {a:element,b:index}});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...