【问题标题】:Converting array into a JS Object将数组转换为 JS 对象
【发布时间】:2018-10-19 18:35:10
【问题描述】:

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

["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];

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

【问题讨论】:

  • 现在是重读How to Ask 并提供minimal reproducible example 和格式正确的问题的好时机。
  • JSON.stringify() ?
  • 你的意思是JS对象还是JSON? JSON 不是一个对象,它是一个字符串。你想要的结果到底是什么,到目前为止你有什么代码?
  • @Kosmos 我认为 OP 想要 JSON.parse(strValue); (取决于对艾米的回答)

标签: javascript


【解决方案1】:

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

最后创建一个对象。

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);

【讨论】:

    【解决方案2】:

    @Nina 的回答很棒。如果您想尝试,请使用 reduce 的另一种解决方案

    var arr = ["model:B250W,C300W4,E300W4,GLA250W4", "class:E", "exteriorColor:BLK", "interiorColor:BGE", "price:30000,115000", "year:2018", "bodyStyle:SDN,CPE,SUV"]
    
    arr.reduce((obj, d) => (obj[d.split(':')[0]] = d.split(':')[1], obj), {})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-04
      • 2012-05-07
      • 2018-02-06
      • 2016-05-22
      • 2021-06-05
      相关资源
      最近更新 更多