这是一个简单的问题,不是JS方面的专家,而是到处搜索,但无法找到任何关于Stackoverflow的现有示例。
基本上,我有一个关联数组,我需要将它转换为一个对象:
示例:
var combinedproducts = [["Testing-1","test-1"],["Testing-2","test2"],["Testing-3","test3"]]
需要它变成这样:
var products = {
// 'productid1':'Product Description One',
'Testing-1':'test-1',
'Testing-2':'test-2',
'Testing-3':'test-3'
}; 做这件事最好/最简单的方法是什么?我可以使用常规的javascript或jquery。
谢谢你的帮助!
发布于 2020-02-20 16:26:25
如果您没有特殊的支持问题,您可以简单地使用Object.fromEntries,假设"test2“和"test3”实际上是数组类型,而不是像在示例输出中那样分别转换为test-2和test-3。
否则,您需要对它们应用转换(在这种情况下,reduce、简单的for或foreach甚至map都可以实现这一点)。
请注意,正如上面提到的,Object.entries没有其他解决方案一样的支持。例如,请记住,它不会在IE和边缘的一般情况下工作,请检查此链接以获得进一步的兼容性信息。。
var combinedproducts = [["Testing-1","test-1"],["Testing-2","test2"],["Testing-3","test3"]];
const products = Object.fromEntries(combinedproducts);
console.log(products);
发布于 2020-02-20 16:25:31
您可以在源数组上使用.reduce()完成此操作:
let object = combinedProducts.reduce((o, a) => (
o[a[0]] = a[1],
o
), {});就其价值而言,源数组在任何形式上都不是真正的“关联数组”。JavaScript没有关联数组类型。
发布于 2020-02-20 16:26:20
可以使用数组约简。在回调函数中,添加内部数组的第一个元素作为键,第二个元素作为值。
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)
https://stackoverflow.com/questions/60324414
复制相似问题