js将数组转化为对象(如何在 JavaScript 中将数组转为对象)
👩 个人主页:不爱吃糖的程序媛
🙋♂️ 作者简介:前端领域新星创作者 、CSDN内容合伙人 ,专注于前端各领域技术 ,成长的路上共同学习共同进步,一起加油呀!
✨系列专栏:前端面试宝典 、JavaScript进阶、vue实战
📢 资料领取:前端进阶资料以及文中源码可以在🎈公众号“不爱吃糖的程序媛 ”领取💖首先 ,我们要明白对象具有键和值 。
JavaScript 的对象(Object) ,本质上是键值对的集合(Hash 结构) ,但是传统上只能用字符串当作键 。
如果我们想把某个东西转换成一个对象 ,我们需要传递具有这两个要求的东西:键和值。
满足这些要求的参数有两种类型: 具有嵌套键值对的数组 Map 对象将数组转为对象
1.Object.fromEntries方法
const newArray = [ [key 1, value 1], [key 2, value 2] ] Object.fromEntries(newArray) // { key 1: "value 1", key 2: "value 2"}2.Map方法
ES6 提供了 Map 数据结构 。它类似于对象 ,也是键值对的集合 ,但是“键 ”的范围不限于字符串 ,各种类型的值(包括对象)都可以当作键 。
也就是说 ,Object 结构提供了“字符串—值 ”的对应 ,Map 结构提供了“值—值 ”的对应,是一种更完善的 Hash 结构实现 。如果你需要“键值对 ”的数据结构 ,Map 比 Object 更合适 。
const map = new Map([ [key 1, value 1], [key 2, value 2] ]) // 或者我们可以使用实例方法 set const map = new Map() map.set(key 1, value 1) map.set(key 2, value 2) Object.fromEntries(map) // { key 1: "value 1", key 2: "value 2"}3.Reduce方法
const array = [ [key1, value1], [key2, value2] ] //或者 const map = new Map([ [key1, value1], [key2, value2] ]) //这个方法好用! function toObject(pairs) { return Array.from(pairs).reduce( (acc, [key, value]) => Object.assign(acc, { [key]: value }), {} ) } toObject(array) // { key1: value1, key2: value2 } toObject(map) // { key1: value1, key2: value2 }4.Underscore 和 Lodash工具集合框架
Lodash是一个具有一致接口 、模块化 、高性能的JavaScript工具库 。一开始Lodash只是Underscore.js的一个fork ,之后再原有的成功基础上取得了更大的成果,lodash的性能远远的超过了Underscore 。
官网文档:https://www.lodashjs.com/Underscore 和 Lodash 也可将键值对转换为对象 。
_.object — 将阵列转换为对象 。传递单个[键 、值]对列表 ,或键列表和值列表 。 // Underscore const array = [ [key1, value1], [key2, value2] ] _.object(array) // { key1: value1, key2: value2 }_.fromPairs — 此方法返回由键值对组成的对象。
// Lodash const array = [ [key1, value1], [key2, value2] ] _.fromPairs(array) // { key1: value1, key2: value2 }将对象转为数组
1. Object.entries方法
Object.entries 方法返回一个给定对象自身可枚举属性的键值对数组 。
const object = { key1: value1, key2: value2 } const array = Object.entries(object) // [ ["key1", "value1"], ["key2", "value2"] ]创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!