如何从Object of Array中删除键

时间:2016-05-14 07:46:37

标签: javascript arrays json

我有如下所示的Array对象,如何将此格式转换为对象数组并删除键。

{
  "9417702107": {
    "name": "Sunny",
    "phone": "9417702107",
    "exists": true
  },
  "8826565107": {
    "name": "Gurwinder",
    "phone": "8826565107",
    "exists": true
  }
}

如何使用javascript将其转换为以下格式:

[{
  "name": "Sunny",
  "phone": "9417702107",
  "exists": true
}, {
  "name": "Gurwinder",
  "phone": "8826565107",
  "exists": true
}]

3 个答案:

答案 0 :(得分:3)

使用简单的循环:

array = [];
for (var key in obj) {
    array.push(obj[key]);
}

与另一个答案一样,不能保证数组元素的顺序与对象的顺序相同。

答案 1 :(得分:1)

只需尝试这个

var output = Object.keys(obj).map(function(key){
  return obj[key];
})

请注意,无法保证output数组中的项目顺序与您在对象中的顺序键值相同。

如果订单很重要,那么在对象本身中放置一个名为order的新属性

var obj {
"9417702107": 
 {
  "name": "Sunny",
  "phone": "9417702107",
  "exists": true,
  "order_sequence" : 1
},
"8826565107": {
  "name": "Gurwinder",
  "phone": "8826565107",
  "exists": true,
  "order_sequence" : 1
}
}

然后转换为数组后,您可以对order_sequence

进行排序
var output = Object.keys(obj).map(function(key){
  return obj[key];
}).sort( function(a,b){
   return a.order_sequence - b.order_sequence;
});

答案 2 :(得分:0)

使用Object.keys和for-cycle。

var keys = Object.keys(input), output = [];
for (var i = 0, length = keys.length; i < length; ++i)
    ouptput.push(input[keys[i]]);
console.log(output);

一些提示:
- 在这种情况下,循环提供了移动性能而不是map函数,因为在今天的JS引擎中:函数调用次数减少,性能更高 - For-each(for(var k in input){})比Object.keys慢,循环为/ while。

今天实施Google V8和Mozilla SpiderMonkey是可以接受的。