将Javascript对象转换为另一种形式
我无法将elasticsearch的以下结果转换为其他形式。有没有一种快速的方法可以做到这一点,或者有必要跳入for循环?提前感谢: 我的数据所采用的格式: 以下是原始格式的格式:将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:
[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的东西之一)。