【问题标题】:How to get an array of objects from an array of key-value pair arrays如何从键值对数组中获取对象数组
【发布时间】:2018-02-02 02:01:33
【问题描述】:

我有一个这样的数组:

var arr = 
[
["Id", "0011900000YDtPXAA1"],
["Name", "account 50"],
["OwnerId", "005190000023IPPAA2"],
["Industry", "Manufacturing"],
["Phone", "312-552-4450"],
["Id", "0011900000YDtPbAAL"],
["Name", "account 54"],
["OwnerId", "005190000023IPPAA2"],
["Industry", "Manufacturing"],
["Phone", "312-552-4454"]
]

我需要每个子数组是一个包含一个键值对的对象。

[
{"Id": "0011900000YDtPXAA1"},
{"Name": "account 50"},
...
]

我试过了

var objArr = new Map(arr);

这会生成我需要的键值对,但会将它们全部放在同一个对象中。如何获得一组由一对 k-v 组成的较小对象?

【问题讨论】:

    标签: javascript arrays object dictionary


    【解决方案1】:

    我会这样做:

    1。箭头函数

    var arr = [
      ["Id", "0011900000YDtPXAA1"],
      ["Name", "account 50"],
      ["OwnerId", "005190000023IPPAA2"],
      ["Industry", "Manufacturing"],
      ["Phone", "312-552-4450"],
      ["Id", "0011900000YDtPbAAL"],
      ["Name", "account 54"],
      ["OwnerId", "005190000023IPPAA2"],
      ["Industry", "Manufacturing"],
      ["Phone", "312-552-4454"]
    ];
    
    const newArr = arr.map(innerArr => ({[innerArr[0]]: innerArr[1]}));
    
    console.log(newArr);

    2。不是箭头函数

    var arr = [
      ["Id", "0011900000YDtPXAA1"],
      ["Name", "account 50"],
      ["OwnerId", "005190000023IPPAA2"],
      ["Industry", "Manufacturing"],
      ["Phone", "312-552-4450"],
      ["Id", "0011900000YDtPbAAL"],
      ["Name", "account 54"],
      ["OwnerId", "005190000023IPPAA2"],
      ["Industry", "Manufacturing"],
      ["Phone", "312-552-4454"]
    ];
    
    const newArr = arr.map(function (innerArr) { return {[innerArr[0]]: innerArr[1]}; });
    
    console.log(newArr);

    map() 方法创建一个新数组,其结果是在调用数组中的每个元素上调用提供的函数。

    【讨论】:

    • 您有语法错误。 {innerArr[0]: innerArr[1]} 应该是 {[innerArr[0]]: innerArr[1]}
    • 我在您编辑后使用了箭头功能。它完美地工作。谢谢!
    【解决方案2】:

    您可以为此使用传统的 for 循环

    var arr = [
      ["Id", "0011900000YDtPXAA1"],
      ["Name", "account 50"],
      ["OwnerId", "005190000023IPPAA2"],
      ["Industry", "Manufacturing"],
      ["Phone", "312-552-4450"],
      ["Id", "0011900000YDtPbAAL"],
      ["Name", "account 54"],
      ["OwnerId", "005190000023IPPAA2"],
      ["Industry", "Manufacturing"],
      ["Phone", "312-552-4454"]
    ];
    
    var arr2 = [];
    
    for (var i = 0; i < arr.length; i++) {
    
      var sub = {};
      
      sub[arr[i][0]] = arr[i][1];
    
      arr2.push(sub);
    
    }
    
    console.log(arr2);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-10
      相关资源
      最近更新 更多