以索引为键初始化对象数组[重复]
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)
;
当您需要访问存储在某个变量下的对象属性时,无论您需要写入或读取对象,都应始终使用方括号
【讨论】:
以上是关于以索引为键初始化对象数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章