【问题标题】:How to convert array of arrays to array of objects where keys are taken from the first array? [duplicate]如何将数组数组转换为从第一个数组中获取键的对象数组? [复制]
【发布时间】:2017-08-11 05:59:58
【问题描述】:

我有一个变量,它返回一个数组数组,每个数组中的每个项目都用双引号引起来。

var arrayOfArrays = [
  [ "Name", "Age", "Address" ],
  [ "A", "43", "CA" ],
  [ "B", "23", "VA" ],
  [ "C", "24", "NY" ]
]

我需要将其转换为以下内容:

var arrayOfObjects = [
  {"Name":"A", "Age":"43", "Address":"CA"},
  {"Name":"B", "Age":"23", "Address":"VA"},
  {"Name":"C", "Age":"24", "Address":"NY"}
]

【问题讨论】:

  • 与 AngularJS 无关,已移除标签
  • 嗨,我有一个棘手的情况,但有点相似 [ [ { name: 'item_label_id', value: '000431a0-cf95-4ac9-af52-2a66f929a25f' } ], [ { name: 'item_label_id', value: '000563b6-de35-40e6-9c27-faa4416cd67b' } ]] 我想要这样的数组数组 {"name":"item_label_id","value":"'000431a0-cf95-4ac9-af52 -2a66f929a25f'","Name":"xyz","Value":"234"} 你有什么建议吗?

标签: javascript arrays javascript-objects


【解决方案1】:

更新

使用Array.prototype.reduce()destructuringcomputed property names 等较新语言结构的简洁版本:

const arrays = [
  ["Name", "Age", "Address"],
  ["A", "43", "CA"],
  ["B", "23", "VA"],
  ["C", "24", "NY"]
];

const [keys, ...values] = arrays;
const objects = values.map(array => array.reduce((a, v, i) => ({...a, [keys[i]]: v}), {}));

console.log(JSON.stringify(objects));

原答案

使用Array.prototype.slice()Array.prototype.map()Array.prototype.forEach()

const arrays = [
  ["Name", "Age", "Address"],
  ["A", "43", "CA"],
  ["B", "23", "VA"],
  ["C", "24", "NY"]
];

const keys = arrays[0];
const values = arrays.slice(1);
const objects = values.map(array => {
  const object = {};

  keys.forEach((key, i) => object[key] = array[i]);
  
  return object;
});

console.log(JSON.stringify(objects));

【讨论】:

  • 您好罗比,感谢您的快速回复。我没有使用 Angular2,你能在 Angular js 中发布答案吗?
  • 这是纯 JavaScript,与 AngularJS 或 Angular 2 无关。顺便说一句,您自己在问题中添加了 angular2 标签。
  • 谢谢你,罗比!你有在 Angular 中做这件事的想法吗?
  • 你有在 Angular 中这样做的想法吗?
  • 有什么区别? JavaScript 就是 JavaScript,不是吗?
【解决方案2】:

希望对你有帮助

var arrayOfArrays = [
      [ "Name", "Age", "Address" ],
      [ "A", "43", "CA" ],
      [ "B", "23", "VA" ],
      [ "C", "24", "NY" ]
    ]
var arrayOfObjects = [];

function changeToObject(arrayOfArrays){  
    for (var i = 1; i < arrayOfArrays.length; i++) {
        var json = {
            "Name" : "",
            "Age" : "",
            "Address" : ""
        }
        json.Name = arrayOfArrays[i][0];
        json.Age = arrayOfArrays[i][1];
        json.Address = arrayOfArrays[i][2];
        arrayOfObjects.push(json);  
    };
    console.log(arrayOfObjects)

}

changeToObject(arrayOfArrays);

【讨论】:

    猜你喜欢
    • 2016-06-06
    • 2021-05-27
    • 2020-11-30
    • 1970-01-01
    • 2017-07-17
    • 2021-02-17
    • 2019-01-14
    • 1970-01-01
    相关资源
    最近更新 更多