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);