首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在javascript中使用map或reduce将2D数组转换为对象

在javascript中使用map或reduce将2D数组转换为对象
EN

Stack Overflow用户
提问于 2018-10-05 05:06:09
回答 4查看 2.2K关注 0票数 4

是否可以转换为

[[35, "Bill"], [20, "Nancy"], [27, "Joan"]]

{"Bill": 35, "Nancy": 20, "Joan": 27}

使用.map().reduce()方法?

我可以使用以下命令转换数组:

代码语言:javascript
复制
const arr = [[35, "Bill"], [20, "Nancy"], [27, "Joan"]];

let obj = {};

for (let item of arr) {
  obj[item[1]] = item[0];
}

console.log(obj);

但是我尝试使用mapreduce来做这件事的尝试失败了。有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-10-05 05:08:58

如果支持,可以使用Object.fromEntries()[key, value]对数组转换为对象。在本例中,对是[value, key],因此我们需要首先将它们映射到[key, value]对的数组。

代码语言:javascript
复制
const arr = [[35, "Bill"], [20, "Nancy"], [27, "Joan"]];

const obj = Object.fromEntries(arr.map(([v, k]) => [k, v]));

console.log(obj);

使用Array.map()创建一个对象数组,其中每个对象包含一个键/值。在Object.assign()中通过spreading将它们组合成一个对象

代码语言:javascript
复制
const arr = [[35, "Bill"], [20, "Nancy"], [27, "Joan"]];

const obj = Object.assign(...arr.map(([v, k]) => ({ [k]: v })));

console.log(obj);

如果需要将对象用作字典,更好的解决方案是将元组数组转换为Map

代码语言:javascript
复制
const arr = [[35, "Bill"], [20, "Nancy"], [27, "Joan"]];

const map = new Map(arr.map(([v, k]) => [k, v]));

console.log(map.get('Bill'));

票数 8
EN

Stack Overflow用户

发布于 2018-10-05 05:07:58

可以,您可以在每次迭代中使用reduce -从数组中提取两个项(作为键和值),将值赋给累加器中的相应键,然后返回累加器:

代码语言:javascript
复制
const input = [[35, "Bill"], [20, "Nancy"], [27, "Joan"]];
const obj = input.reduce((a, [val, key]) => {
  a[key] = val;
  return a;
}, {});
console.log(obj);

票数 5
EN

Stack Overflow用户

发布于 2018-10-05 05:09:29

您可以映射新对象的项,并使用Object.assign将所有项指定给单个对象。

代码语言:javascript
复制
var array = [[35, "Bill"], [20, "Nancy"], [27, "Joan"]],
    object = Object.assign(...array.map(([v, k]) => ({ [k]: v })));
    
console.log(object);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52655148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档