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

JavaScript技术疑问:为何空字符串未被添加到Map中?

问题解析:为何空字符串未被添加到Map的对应数组中?

原代码示例

const strs = ["eat", "tea", "tan", "ate", "nat", "bat"]

var sortAlphabets = function(text) {
  return text.split('').sort().join('');
};

let map = new Map();
for (let str of strs) {
  let key = sortAlphabets(str);
  map[key] = [...map[key] || "", str];
}

console.log(Object.values(map))

问题描述

当将代码中的map[key] = [...map[key] || "", str];替换为map[key] = [...map[key] || "te", str];时,Map对应属性的数组会先插入"t"和"e"两个字符;但使用空字符串""时,数组里却不会出现空字符串。这是为什么?


原因解释

核心在于扩展运算符(...)对字符串的拆解逻辑:

  • 对于非空字符串(比如"te"),扩展运算符会把它拆成单个字符组成的数组,也就是["t", "e"],所以[..."te", str]最终会变成["t", "e", str]。
  • 对于空字符串"",它没有任何字符可以拆解,扩展后得到的是一个空数组,所以[..."", str]等价于[...[], str],最终结果就是[str],自然看不到空字符串的影子。

另外提个小细节:你这里声明了Map实例,但实际用的是普通对象的属性赋值(map[key] = ...),而非Map的set()方法,不过这和当前问题的核心原因无关。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:10:32