JavaScript - 使用扩展操作或替代方法向对象添加额外的键值
JavaScript - adding extra keys values to an object using spread operation or alternative approaches
代码如下:
let bucket = [[],[],[],[],[],[],[],[],[],[]];
bucket = {...Object.keys(bucket)
.sort((a,b) => b-a)
.filter(key => key > 0)
.map(key => '-'+key),
...bucket};
console.log(bucket);
问题:第一行代码没有将原bucket对象的负键添加到对象中,所有属性(键)对应的值为空数组
Bucket 仅在评估这行代码后显示其原始属性和值
我怎样才能让它工作?
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);
代码如下:
let bucket = [[],[],[],[],[],[],[],[],[],[]];
bucket = {...Object.keys(bucket)
.sort((a,b) => b-a)
.filter(key => key > 0)
.map(key => '-'+key),
...bucket};
console.log(bucket);
问题:第一行代码没有将原bucket对象的负键添加到对象中,所有属性(键)对应的值为空数组
Bucket 仅在评估这行代码后显示其原始属性和值
我怎样才能让它工作?
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);