Replies: 1 comment
-
好吧,重新下载安装一下就好了 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
以下是 JavaScript 中 数组(Array)、对象(Object)、Map、Set 的核心概念、方法对比及易混淆点的总结,用表格和分类形式清晰呈现:
1. 核心概念对比
2. 核心方法对比
Array(数组)
push/pop
unshift/shift
操作头部splice(index, n)
slice(start, end)
forEach/map
map
必须显式返回includes(item)
Object(对象)
obj.key
/obj['key']
Object.keys(obj)
Object.getOwnPropertySymbols
)Object.values(obj)
'key' in obj
Map
map.set(key, val)
map.get(key)
undefined
map.has(key)
obj.hasOwnProperty
更直观map.size
Set
set.add(value)
set.has(value)
includes
更快set.size
3. 易混淆知识点
(1)类型选择误区
对象 vs Map
数组 vs Set
(2)引用类型陷阱
(3)迭代顺序
Object.keys()
的顺序可能受引擎优化影响(慎依赖)。(4)方法命名差异
push
add
set
splice/pop
delete
delete
includes
has
has
(5)空值处理
4. 何时使用哪种结构?
Array
Object
Map
Set
5. 一句话总结
掌握这些核心区别和方法,可以避免大多数 JS 数据结构相关的坑!
遍历与比较
在 JavaScript 中,
Set
和Map
使用 严格相等(strict equality) 来判断元素是否存在,而对象是通过 引用比较 的。因此,即使两个对象的内容相同,如果它们的引用不同,set.has()
也会返回false
。问题分析
解决方案
1. 使用相同的对象引用
2. 遍历检查对象内容
如果必须检查内容相同的对象,可以手动遍历
Set
:注意:
JSON.stringify
方法在对象属性顺序不同时可能失效(如{a:1, b:2}
和{b:2, a:1}
会被视为不同)。3. 使用
Map
并自定义键如果业务需要基于对象内容判断,可以用
Map
并序列化对象为字符串键:4. 使用第三方库(如 Lodash)
总结
推荐:
Map
+ 序列化)。Beta Was this translation helpful? Give feedback.
All reactions