JavaScript - 使用扩展操作或替代方法向对象添加额外的键值
Posted
技术标签:
【中文标题】JavaScript - 使用扩展操作或替代方法向对象添加额外的键值【英文标题】:JavaScript - adding extra keys values to an object using spread operation or alternative approaches 【发布时间】:2021-11-14 03:03:58 【问题描述】:代码如下:
let bucket = [[],[],[],[],[],[],[],[],[],[]];
bucket = ...Object.keys(bucket)
.sort((a,b) => b-a)
.filter(key => key > 0)
.map(key => '-'+key),
...bucket;
console.log(bucket);
问题:第一行代码没有将原始桶对象的负键添加到对象中,所有属性(键)都有空数组作为其对应值。
bucket 只在这行代码被求值后才显示它的原始属性和值
我怎样才能让它工作?
【问题讨论】:
【参考方案1】:Array.map()
使用您的否定键创建一个字符串数组,当您传播 bucket
数组时它们会被覆盖。而是创建一对[new key, []]
转换为带有Object.fromEntries()
的对象,然后传播它们:
const bucket = [[],[],[],[],[],[],[],[],[],[]];
const result =
...Object.fromEntries(
Object.keys(bucket)
.filter(key => key > 0)
.sort((a, b) => b-a)
.map(key => [-key, []])
),
...bucket;
console.log(result);
【讨论】:
好的...我现在明白了,所以我的数组需要转换回一个对象,然后展开,我没有成功地做到这一点。我现在有一个新方法,我需要在必要时定期使用,即 fromEntries 方法。我也错误地没有为键指定空值。这可以在没有一对数组值的情况下完成吗,但更像是 [-key] 的括号单独带有相应的属性?请建议。非常感谢。 不客气 :)以上是关于JavaScript - 使用扩展操作或替代方法向对象添加额外的键值的主要内容,如果未能解决你的问题,请参考以下文章