将Javascript对象转换为另一种形式

将Javascript对象转换为另一种形式,javascript,arrays,Javascript,Arrays,我无法将elasticsearch的以下结果转换为其他形式。有没有一种快速的方法可以做到这一点,或者有必要跳入for循环?提前感谢: 我的数据所采用的格式: 以下是原始格式的格式: [Object, Object, Object, Object, Object, Object, Object, Object, Object, Object] 1. 0: Object 1. count: 986 2. term: "virginia" 3. __proto__: Object 2. 1:

我无法将elasticsearch的以下结果转换为其他形式。有没有一种快速的方法可以做到这一点,或者有必要跳入for循环?提前感谢:

我的数据所采用的格式: 以下是原始格式的格式:

[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]
1.  0: Object
1.  count: 986
2.  term: "virginia"
3.  __proto__: Object
2.  1: Object
1.  count: 447
2.  term: "washington"
3.  __proto__: Object
3.  2: Object
1.  count: 345
2.  term: "newYork"
我需要转换为的格式:

var states= [
      {
        "key": 'popular',
        "values": [
          [ 'texas' , 10] ,
          [ 'washington' , 5] ,
          [ 'new york' , 20] ,
          [ 'virginia' , 40]          
        ]
      }
    ];
为了帮助显示数据的外观,此图显示了console中的格式:

查看示例数据,它似乎是一个对象数组,每个对象都有一个
术语
计数
属性
Array#map
可以将其转换为数组,术语位于第一个位置,计数位于第二个位置:

var states= [
  {
    "key": 'popular',
    "values": data.map(function(entry) {
        return [entry.term, entry.count];
    })
  }
];
实例:

var数据=[
{
术语:“弗吉尼亚”,
总数:986
},
{
术语:“华盛顿”,
计数:447
},
{
术语:“纽约”,
计数:345
}
];
变量状态=[
{
“关键”:“流行”,
“值”:data.map(函数(条目){
返回[entry.term,entry.count];
})
}
];
//结果(我在这里使用JSON只是为了方便
//显示结果;问题根本不使用JSON)
var pre=document.createElement('pre');
pre.innerHTML=JSON.stringify(states,null,2);

文件.正文.附件(pre)但是使用正确的数字,对吗?例如,
'washington'
将有447个循环,而不是5个。是的,你需要一个循环(为什么人们如此热衷于避免循环?)。在现代浏览器上,它不一定是
for
循环<代码>数组#映射
数组#forEach
看起来相当适用。因此,请循环使用并生成所需的数组。这里根本没有JSON。@user2816352:不用担心。我应该提到:
Array#map
是ES5的一项功能,如果你需要支持像IE8这样的旧浏览器,你会想要一个polyfill(但它是可以使用polyfill的东西之一)。