Javascript或查询-将关联数组转换为对象
这是一个简单的问题,不是JS方面的专家,也不是到处搜索的专家,但无法获得任何关于Stackoverflow的现有示例 基本上,我有一个关联数组,我需要将其转换为一个对象: 例如:Javascript或查询-将关联数组转换为对象,javascript,jquery,arrays,object,Javascript,Jquery,Arrays,Object,这是一个简单的问题,不是JS方面的专家,也不是到处搜索的专家,但无法获得任何关于Stackoverflow的现有示例 基本上,我有一个关联数组,我需要将其转换为一个对象: 例如: var组合产品=[[“测试-1”、“测试-1”]、[“测试-2”、“测试2”]、[“测试-3”、“测试3”] 需要它变成这样: var products = { // 'productid1':'Product Description One', 'Testing-1':'test-1'
var组合产品=[[“测试-1”、“测试-1”]、[“测试-2”、“测试2”]、[“测试-3”、“测试3”]
需要它变成这样:
var products = {
// 'productid1':'Product Description One',
'Testing-1':'test-1',
'Testing-2':'test-2',
'Testing-3':'test-3'
};
最好/最简单的方法是什么?我可以使用常规javascript或jquery
谢谢你的帮助 您可以使用源阵列上的
.reduce()
执行此操作:
let object = combinedProducts.reduce((o, a) => (
o[a[0]] = a[1],
o
), {});
值得一提的是,源数组在任何形式上都不是真正的“关联数组”。JavaScript没有关联数组类型。您可以使用array reduce。在回调函数中,添加内部数组的第一个元素作为键,第二个元素作为值
let数据=[
[“测试-1”,“测试-1”],
[“测试-2”,“测试2”],
[“测试-3”,“测试3”]
];
让newData=data.reduce((acc,curr)=>{
acc[当前值[0]]=当前值[1]
返回acc;
}, {});
console.log(newData)
如果您没有特殊的支持问题,您可以简单地使用,假设“test2”和“test3”实际上是数组类型,而不是像在示例输出中那样分别转换为test-2
和test-3
否则,您需要对它们应用转换(在这种情况下,reduce
、简单的for
或foreach
甚至map
都可以实现)
请注意,如上所述,Object.entries与其他解决方案不具有相同的支持。例如,请记住,它一般不会在IE和Edge中工作
var组合产品=[[“测试-1”、“测试-1”]、[“测试-2”、“测试2”]、[“测试-3”、“测试3”];
const products=Object.fromEntries(组合产品);
控制台日志(产品)代码>您也可以使用此方法
const c=[[“Testing-1”、“test-1”]、[“Testing-2”、“test2”]、[“Testing-3”、“test3”];
obj=c.reduce((acc,[key,val])=>Object.assign(acc,{[key]:val}),{});
console.log(obj)
另一种与对象连成一行的替代方法。分配和映射。
var组合产品=[
[“测试-1”,“测试-1”],
[“测试-2”,“测试2”],
[“测试-3”,“测试3”]
];
const obj=Object.assign(
{},
…combinedproducts.map(([key,value])=>({[key]:value}))
);
控制台日志(obj)代码>我总是忘记它的存在:)很好的解决方案,可惜IE或Edge不支持它:(@Pointy我通常也支持,不知道这次为什么会想到它。@Rorymcrossan是的,因此我的前言:(.谢谢你的帮助!测试文本是打字错误,不需要转换。注意IE的兼容性问题!选择它作为答案,因为它是我所寻找的最简单的解决方案。最简单的读取=一行代码。