将javascript对象转换为单个对象的数组

时间:2016-06-10 04:59:08

标签: javascript arrays loops object

我有以下对象:

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

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

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

无法在任何地方找到答案。谢谢!

5 个答案:

答案 0 :(得分:9)

  

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

答案 1 :(得分:3)

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

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

console.log(array);

答案 2 :(得分: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 :(得分:0)

您可以通过<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <ul> <li class="link">Link1 <ul class="nested_menu"> <li>Nested point</li> </ul> </li> <li class="link">Link2 ... </li> </ul>直接分配对象,但是如果不是那样,您必须使用{}引用键值

[]

答案 4 :(得分:-1)

您可以使用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);