如何将对象转换为数组?

时间:2016-07-04 05:05:04

标签: javascript arrays object data-structures

我有一个对象数组,我想将一个删除对象更改为数组。

我的目标是:

infix operator ∆+ { associativity left precedence 140 } func ∆+ (left: String, right: String) -> String { return newAddition(left,second:right) }

我希望结果像带索引的数组:

[{ABC: "ELEMENT1", MAX: 2, MIN: "Yes"}, {ABC: "ELEMENT2", MAX: 1, MIN: "Yes"}]

2 个答案:

答案 0 :(得分:5)

  

使用Array#map而不是Object.keys(obj)

Object.keys()方法返回给定对象自己的可枚举属性的数组。

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

var ip = {
  STU: "Study1",
  SUB: 2,
  EXL: "Yes"
};
var op = Object.keys(ip).map(function(key) {
  return ip[key];
});
console.log(op);

要迭代Array-of-Objects

var ip = [{
  STU: "Study1",
  SUB: 2,
  EXL: "Yes"
}, {
  STU: "Study2",
  SUB: 4,
  EXL: "No"
}];
var op = ip.map(function(item) {
  return Object.keys(item).map(function(key) {
    return item[key];
  });
});

console.log(op);

答案 1 :(得分:5)

那将是:

var array = Object.keys(obj).map(key => obj[key]);

但是,Object.keys无法保证顺序,因为它的工作方式类似于for-in循环,其遍历顺序是任意的。您可能无法按照确切的顺序获得["Study1",2,"Yes"]。如果您想保证订单,您必须使用包含密钥顺序的数组,并按顺序从对象中提取它们。

var keyArray = ['STU', 'SUB', 'EXL'];
var array = keyArray.map(key => obj[key]);