以索引为键初始化对象数组[重复]

Posted

技术标签:

【中文标题】以索引为键初始化对象数组[重复]【英文标题】: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);

【问题讨论】:

使用计算属性[i]: 0 计算属性文档见:MDN Object initializer - Computed property names 这能回答你的问题吗? Convert object array to hash map, indexed by an attribute value of the Object 【参考方案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);

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

【讨论】:

以上是关于以索引为键初始化对象数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使 HashMap 以数组为键工作?

如何在 NSDictionary 中为键和对象添加数组

如何将 javascript 对象转置为键/值数组

数组字典和集合的定义

如何在php中将对象数组转换为键值对

数组的使用