【问题标题】:JavaScript - adding extra keys values to an object using spread operation or alternative approachesJavaScript - 使用扩展操作或替代方法向对象添加额外的键值
【发布时间】: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 只在这行代码被求值后才显示它的原始属性和值

我怎样才能让它工作?

【问题讨论】:

    标签: javascript object key spread-syntax


    【解决方案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] 的括号单独带有相应的属性?请建议。非常感谢。
    • 不客气 :)
    猜你喜欢
    • 2014-05-14
    • 1970-01-01
    • 2018-11-11
    • 2014-12-11
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多