JavaScript: Создать объект с заданными входными аргументами .map () без использования ярлыка ES6 {}. - PullRequest
2 голосов
/ 05 июля 2019

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

const indexAndValue = (arr) => {

  return arr.map((elem, index) => {
    return { index, elem }
  }); 
}

indexAndValue([22, 33, 44, 55])

Код вывода:

[ { index: 0, elem: 22 },
  { index: 1, elem: 33 },
  { index: 2, elem: 44 },
  { index: 3, elem: 55 } ]

Как получить тот же вывод без использования ярлыка {}? Я попробовал следующий код:

const indexAndValue = (arr) => {

  let obj = {}; 

  return arr.map((elem, index) => {
    return obj[index] = elem; 
  }); 
}

indexAndValue([22, 33, 44, 55])

Этот код возвращает неверно:

[ 22, 33, 44, 55 ]

1 Ответ

2 голосов
/ 05 июля 2019

Вам необходимо переместить объявление объекта внутри функции обратного вызова.Если снаружи, вы повторно используете объект, и все элементы содержат один и тот же объект с последним обновлением из-за одной и той же ссылки на объект.

const indexAndValue = (arr) => {
  return arr.map((elem, index) => {
      var object = {};
      object.index = index;
      object.elem = elem;
    return object;
  }); 
}

console.log(indexAndValue([22, 33, 44, 55]));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...