首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript或查询-将关联数组转换为对象

Javascript或查询-将关联数组转换为对象
EN

Stack Overflow用户
提问于 2020-02-20 16:23:07
回答 5查看 139关注 0票数 0

这是一个简单的问题,不是JS方面的专家,而是到处搜索,但无法找到任何关于Stackoverflow的现有示例。

基本上,我有一个关联数组,我需要将它转换为一个对象:

示例:

var combinedproducts = [["Testing-1","test-1"],["Testing-2","test2"],["Testing-3","test3"]]

需要它变成这样:

代码语言:javascript
复制
var products = {
        // 'productid1':'Product Description One',
        'Testing-1':'test-1',
        'Testing-2':'test-2',
        'Testing-3':'test-3'
    }; 

做这件事最好/最简单的方法是什么?我可以使用常规的javascript或jquery。

谢谢你的帮助!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-02-20 16:26:25

如果您没有特殊的支持问题,您可以简单地使用Object.fromEntries,假设"test2“和"test3”实际上是数组类型,而不是像在示例输出中那样分别转换为test-2test-3

否则,您需要对它们应用转换(在这种情况下,reduce、简单的forforeach甚至map都可以实现这一点)。

请注意,正如上面提到的,Object.entries没有其他解决方案一样的支持。例如,请记住,它不会在IE和边缘的一般情况下工作,请检查此链接以获得进一步的兼容性信息。

代码语言:javascript
复制
var combinedproducts = [["Testing-1","test-1"],["Testing-2","test2"],["Testing-3","test3"]];

const products = Object.fromEntries(combinedproducts);
console.log(products);

票数 4
EN

Stack Overflow用户

发布于 2020-02-20 16:25:31

您可以在源数组上使用.reduce()完成此操作:

代码语言:javascript
复制
let object = combinedProducts.reduce((o, a) => (
  o[a[0]] = a[1],
  o
), {});

就其价值而言,源数组在任何形式上都不是真正的“关联数组”。JavaScript没有关联数组类型。

票数 4
EN

Stack Overflow用户

发布于 2020-02-20 16:26:20

可以使用数组约简。在回调函数中,添加内部数组的第一个元素作为键,第二个元素作为值。

代码语言:javascript
复制
let data = [
  ["Testing-1", "test-1"],
  ["Testing-2", "test2"],
  ["Testing-3", "test3"]
];

let newData = data.reduce((acc, curr) => {
  acc[curr[0]] = curr[1]
  return acc;
}, {});
console.log(newData)

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

https://stackoverflow.com/questions/60324414

复制
相关文章

相似问题

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