You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript使用扩展运算符为对象添加负号键值对不生效如何解决

问题原因

原有代码的核心错误是:map 方法返回的是仅包含负号前缀字符串的数组,直接用展开运算符...将数组展开到对象中时,会默认把数组的索引作为新对象的键、负号字符串作为对应值,完全无法生成你预期的「负号前缀为键、空数组为对应值」的结构。

修正后代码
let bucket = [[],[],[],[],[],[],[],[],[],[]];

bucket = {
  // 先生成负号前缀键对应的空数组对象
  ...Object.fromEntries(
    Object.keys(bucket)
      .sort((a,b) => b - a)
      .filter(key => key > 0)
      .map(key => [`-${key}`, []])
  ),
  // 保留原有bucket的全部属性和取值
  ...bucket
};

console.log(bucket);
实现说明
  • 用Object.fromEntries方法,将map返回的[键名, 键值]格式二维数组,直接转换为符合要求的键值对对象,所有负号前缀的键都会对应空数组[]
  • 如果需要原有正整数键的优先级高于负号键,保持现有展开顺序即可;如果需要负号键覆盖同名属性,调换两个...展开的位置即可。

内容的提问来源于stack exchange,提问作者Vahe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:54:05