首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组数组转换为对象数组

数组数组转换为对象数组
EN

Stack Overflow用户
提问于 2017-09-05 02:29:47
回答 2查看 70关注 0票数 0

所以我有一个JSON数组

代码语言:javascript
复制
[ [ "2015", "Honda", "CR-V", "1.5", "Turbo 7-Seater", "Automatic" ], [ "2016", "Mazda", "CX-5", "2.0", "Premium", "Manual" ] ] 

实际上,我需要使用JSON数组中的值和键创建一个新的JSON对象,如下所示:

代码语言:javascript
复制
{
  "root": {
    "cars": [
      {
        "Year": "2015",
        "Make": "Honda",
        "Model": "CR-V",
        "Engine": "1.5",
        "Submodel": "Turbo 7-Seater",
        "Transmission": "Automatic"
      },
      {
        "Year": "2016",
        "Make": "Mazda",
        "Model": "CX-5",
        "Engine": "2.0",
        "Submodel": "Premium",
        "Transmission": "Manual"
      }
    ]
  }
}

我对JSON和Javascript很陌生。有人能提供一些建议和指导吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-05 08:35:30

首先是Javascript、arraysobjects,而不是JsonArrayJSONObject

如果object属性总是相同的,则只需将数组元素放到相应的对象中:

代码语言:javascript
复制
var results = {
  "root": {
    "cars": arr.map(function(item) {
      return {
        "year": item[0],
        "make": item[1],
        "model": item[2],
        "engine": item[3],
        "submodel": item[4],
        "transmission": item[5]
      }
    })
  }
}

演示:

代码语言:javascript
复制
var arr = [
  ["2015", "Honda", "CR-V", "1.5", "Turbo 7-Seater", "Automatic"],
  ["2016", "Mazda", "CX-5", "2.0", "Premium", "Manual"]
];

var results = {
  "root": {
    "cars": arr.map(function(item) {
      return {
        "year": item[0],
        "make": item[1],
        "model": item[2],
        "engine": item[3],
        "submodel": item[4],
        "transmission": item[5]
      }
    })
  }
}

console.log(results);

票数 1
EN

Stack Overflow用户

发布于 2017-09-05 08:41:18

您可以将原始数组传递给此函数,以得到您期望的结果。我知道,您说过您是JS的新手,所以我的解决方案来自最简单的函数(forEach of JS);

代码语言:javascript
复制
var rootObj = [ [ "2015", "Honda", "CR-V", "1.5", "Turbo 7-Seater", "Automatic" ], [ "2016", "Mazda", "CX-5", "2.0", "Premium", "Manual" ] ];


function convert(arr) {
  var result = { root: { cars: [ ] } };
  arr.forEach(function(val) {
    result.root.cars.push({
      "Year": val[0],
      "Maker": val[1],
      "Model": val[2],
      "Engine": val[3],
      "Submodel": val[4],
      "Transmission": val[5]
    })
  });
  return result;
}

// You can test the result with this line of code
var output = convert(rootObj);
console.log('RESULT: ', JSON.stringify(output));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46046186

复制
相关文章

相似问题

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