new Map,Array.from,Object.entries的作用以及使用方法

1、先看完整代码

bash 复制代码
Array.from(new Map(arr.map(item => [item.code, item])).values())

先来看看 arr.map(...)

作用:把对象数组变成「键值对数组」

例如:[{code:'1',name:'2'},{code:'2',name:'3'}]

会变成

\['1', {code:'1',name:'2'}\], \['2', {code:'2',name:'3'}

]

Map 必须接收 [key, value] 格式,所以这一步是为 Map 做准备。

2、 new Map(...) 的作用

Map 是什么?

Map 是 JS 的键值对结构,key 唯一不重复。

1、自动去重

如果有重复 code,后面的会覆盖前面的,最终只保留最后一个。

2、存储结构

以 code 为 key,整个对象为 value

执行后得到一个 Map 结构:

bash 复制代码
Map(2) {
  '1' => { code: '1', name: '2' },
  '2' => { code: '2', name: '3' }
}

3、.values() 的作用

bash 复制代码
map.values()

作用:只把 Map 里的「值」取出来

得到一个 MapIterator 迭代器(不是数组,不能直接用):

bash 复制代码
[Map Iterator] {
  { code: '1', name: '2' },
  { code: '2', name: '3' }
}

4、 Array.from(...) 的作用(核心)

Array.from(迭代器)

它的作用只有一句话:把「类数组 / 迭代器」转成真正的数组!

上面的 .values() 返回的是迭代器,不是数组,不能直接用。

Array.from 就是把它变成标准数组:

bash 复制代码
[
  { code: '1', name: '2' },
  { code: '2', name: '3' }
]

5、Object.entries

一句话:Object.entries(对象) 会把一个对象,转成 [[key, value], [key, value], ...] 这样的二维数组。

Object.entries(对象)

→ 把对象变成 [[键, 值], [键, 值]] 的数组

new Map(二维数组)

→ 接收这种结构,生成一个 Map 做去重

相关推荐
lsx2024062 小时前
操作系统统计
开发语言
大漠_w3cpluscom2 小时前
CSS 技巧:CSS 单位使用指南
前端
_下雨天.2 小时前
Python 网络编程
开发语言·网络·python
小樱花的樱花2 小时前
打造高效记事本:UI设计到功能实现
开发语言·c++·qt·ui
STATICHIT静砸2 小时前
了解Monorepo结构
前端
橘子编程2 小时前
MindOS:你的AI第二大脑知识库
java·开发语言·人工智能·计算机网络·ai
星光不问赶路人2 小时前
Node.js 如何判断入口文件:从 require.main 到 ES Module 实现
前端·node.js
aini_lovee2 小时前
C# 快速搜索磁盘文件解决方案
开发语言·c#