JavaScript:在不使用ES6 {}快捷方式的情况下,创建给定.map()输入参数的Object

时间:2019-07-05 18:12:41

标签: javascript function object arguments key-value

我目前正在使用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 个答案:

答案 0 :(得分:2)

您需要在回调内部移动对象的声明。如果在外部,则重复使用该对象,并且由于相同的对象引用,所有元素都包含具有最新更新的同一对象。

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]));