首页 > 解决方案 > 将数组转换为 JS 对象

问题描述

我在数组中有键值对,格式为 -

["model:B250W,C300W4,E300W4,GLA250W4", "class:E", "exteriorColor:BLK", "interiorColor:BGE", "price:30000,115000", "year:2018", "bodyStyle:SDN,CPE,SUV"]. 

如何将其转换为 JS 对象?预期的输出应该是:

{
    "model":"B250W,C300W4,E300W4,GLA250W4",
    "class":"E",
    "exteriorColor":"BLK",
    "interiorColor":"BGE", 
    "price":"30000,115000", 
    "year":"2018", 
    "bodyStyle":"SDN,CPE,SUV"
}

我试过-

y=["model:B250W,C300W4,E300W4,GLA250W4", "class:E", "exteriorColor:BLK", "interiorColor:BGE", "price:30000,115000", "year:2018", "bodyStyle:SDN,CPE,SUV"];
x=Object();
x.y[0].split('&')[0]=y[0].split('&')[1];

但我遇到了一个错误。这是将键和值分配给对象的其他方式吗?

标签: javascript

解决方案


您可以迭代字符串,拆分值并将第一项作为键并连接所有其他值(如果拆分)以获得新对象。

最后创建一个对象。

var data = ["model:B250W,C300W4,E300W4,GLA250W4", "class:E", "exteriorColor:BLK", "interiorColor:BGE", "price:30000,115000", "year:2018", "bodyStyle:SDN,CPE,SUV"],
    object = Object.assign(
        ...data.map(s => (([k, ...v]) => ({ [k]: v.join(':') }))(s.split(':')))
    );
    
console.log(object);


推荐阅读