【问题标题】:Convert javascript object to array of individual objects将 javascript 对象转换为单个对象的数组
【发布时间】:2016-10-10 22:44:08
【问题描述】:

我有以下对象:

{English: 4, Math: 5, CompSci: 6}

如何将其转换为对象数组,例如:

[{English: 4}, {Math: 5}, {CompSci: 6}]

在任何地方都找不到答案。谢谢!!

【问题讨论】:

  • 向我们展示您的尝试,您面临的一些问题(具体问题),我们很乐意提供帮助。
  • 要添加@AndrewL 所说的内容,您需要向我们展示您实际上首先尝试了一些东西。向我们展示您失败的代码,我们将帮助您找出失败的原因以及如何解决您的问题。
  • 你为什么要这样做?此外,这几乎是 convert object to array of objects 的副本。
  • object 的更合理/有用的结构是 {subject:SUBJECT_NAME, code:SUBJECT_CODE}

标签: javascript arrays loops object


【解决方案1】:

使用Array#forEach 而不是Object.keys(YOUR_OBJECT)

var input = {
  English: 4,
  Math: 5,
  CompSci: 6
};
var op = [];
Object.keys(input).forEach(function(key) {
  var obj = {};
  obj[key] = input[key];
  op.push(obj); //push newly created object in `op`array
});
console.log(op);

【讨论】:

  • 很好的答案,只是不喜欢提问者要求别人用勺子喂他们的事实。
  • 谢谢人造丝。昨晚花了 3 个小时,我能做的最好的就是制作嵌套数组。干杯!
【解决方案2】:

只需遍历对象中的每个键。

var oldObject = {English: 4, Math: 5, CompSci: 6};
var newArray = [];

// Loop over each key in the object
for (var key in oldObject) {
    // Create a temp object
    var temp = {};
    
    // Set the key of temp
    temp[key] = oldObject[key]

    // Push it to the array
    newArray.push(temp);
}

console.log(newArray)

【讨论】:

    【解决方案3】:

    您可以通过{} 直接分配对象,但您必须使用[] 引号作为键值,否则将不起作用

     var obj = {English: 4, Math: 5, CompSci: 6};
     var n_obj = [];
     for(var i in obj){
        n_obj.push({[i]:obj[i]});
     }
     console.log(n_obj);
    

    【讨论】:

      【解决方案4】:

      您可以使用JSON.stringify()String.prototype.match()RegExp /".*"\:.*(?=,|})/String.prototype.split()RegExp /,/Array.prototype.join() 和参数"},{"JSON.parse()

      var obj = {English: 4, Math: 5, CompSci: 6};
      var res = JSON.parse("[{" 
                + JSON.stringify(obj)
                  .match(/".*"\:.*(?=,|})/g)[0]
                  .split(/,/)
                  .join("},{") 
                + "}]");
      console.log(res);

      【讨论】:

        【解决方案5】:

        使用较新的 JS,您可以使用 Object.entries 并映射单个属性。

        var object = { English: 4, Math: 5, CompSci: 6 },
            array = Object.entries(object).map(([k, v]) => ({ [k]: v }));
        
        console.log(array);

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-01-14
          • 2019-02-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-22
          • 1970-01-01
          相关资源
          最近更新 更多