【问题标题】:Initialising an array of objects with the index as key [duplicate]以索引为键初始化对象数组[重复]
【发布时间】:2021-04-23 05:28:44
【问题描述】:

我试图找出如何初始化一个对象数组,其中每个对象都以索引 (i) 作为其键,0 作为其值。下面的代码没有按预期工作,但我不明白为什么。我还是 Javascript 的初学者,在别处找不到答案。

var n = 10;
var sample = [];
for (var i = 0; i < n; i++)
    sample.push({i : 0});

【问题讨论】:

标签: javascript node.js typescript ecmascript-6


【解决方案1】:

在索引 [i] 中添加方括号:

  var n = 10;
  var sample = [];
  for (var i = 0; i < n; i++)
      sample.push({[i]: 0});
  console.log(sample);

【讨论】:

  • 这个答案没有解决 OP 问题。
  • 它以 n 个对象和 i 作为键值初始化 Array。对象值为 0。不明白为什么它不适用于 OP。
  • 预期结果是[{"0":0},{"1":0},{"2":0},{"3":0},{"4":0},{"5":0},{"6":0},{"7":0},{"8":0},{"9":0}],这不是您的回答返回的结果。
  • 如果是这种情况,我必须将其编辑为 sample.push({[i]: 0});
【解决方案2】:

对于功能方法,您可以尝试:

const initArray = (n)=>{
  const newArr = new Array(n).fill(0);
  return newArr.map((value, index)=> ({[index]: value}))
 }

【讨论】:

    【解决方案3】:

    下面的代码应该可以完成这项工作:

    let n = 10;
    let sample = Array.from({length:n}, (_, i) => ({ [i]: 0 }));
    

    正如 Oleksandr Sakun 在他的回答中指出的那样,在括号中使用索引是为了评估变量并将其设置为对象的属性。

    【讨论】:

      【解决方案4】:

      你应该使用这个语法sample.push({[i]: 0});

      当您需要访问存储在某个变量下的对象属性时,无论您需要写入或读取对象,都应始终使用方括号

      【讨论】:

        猜你喜欢
        • 2018-09-19
        • 1970-01-01
        • 1970-01-01
        • 2012-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-22
        相关资源
        最近更新 更多