将Javascript响应转换为Array/Map
Convert Javascript response to Array/Map
我从Javascript ElasticSearch查询中得到了以下响应,我需要将其映射到以下结构。有没有比我现在做的更有效的方法?
感谢
我需要映射到的结构:(大约700个)
[{
"coordinates": ["48", "37"],
"name": "something",
"population": "501"
},
当前返回的数据结构:
[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]
0: Object
_id: "4"
_index: "locationIndex"
_score: 1
_source: Object
coordinates: Array[2]
0: -77.080597
1: 38.892899
length: 2
__proto__: Array[0]
name: "someName"
population: 57205
1: Object
...
我正在尝试但失败的内容:
var results= [{
"key": 'coordinates',
resp.coordiantes[0],
resp.coordinates[1],
"key": 'name',
resp.name
})
}];
假设数据存储在myData
变量中,则可以使用Array.prototype.map
方法对其进行操作并实现所需的功能。这里有一个解决方案:
result = myData.map(function(obj) {
return {
coordinates: obj._source.coordinates,
name: obj.name,
population: obj.population
}
});
就这么简单!结果将是这样的:
[
{
"coordinates": [-77.080597, 38.892899],
"name": "some name",
"population": 52701
},
{
"coordinates": [-54.930299, 30.992833],
"name": "some name 2",
"population": 84229
},
{
"coordinates": [-82.001438, -5.38131],
"name": "some name 3",
"population": 5991
} //, ...
]
您似乎不太了解Javascript中的Object语法;为了让我的答案更有意义,你不妨读一读。
现在你对对象有了更多的了解,你应该很清楚你想要的东西看起来像:
var results = [];
for (var i = 0, len = data.length; i < len; i++)
{
var resp = data[i];
results.push({
'coordinates':resp['source']['coordinates'],
'name':resp.name,
'population':resp.population
});
}
为了获得额外的积分,您可以包含像jQuery这样的JS框架,只需使用map
函数。
我最喜欢Marcos地图解决方案,但也可能快速使用Array.from(data)
。这在过去帮助我转换了响应API数据,该数据应该是一个数组,但还不是。
我是开源项目的作者http://www.jinqJs.com.你可以很容易地做这样的事情来做你想做的事。
var result = jinqJs().from(data5).select(function(row){
return {coordinates: [row.coordinates[0]['0'], row.coordinates[0]['1']],
name: row.name,
population: row.population
}
});
相关文章:
- 将Javascript响应转换为Array/Map
- Array.map() and D3 selection?
- Array.from 在 Array#map 中不能用作直接回调函数
- 在 Array.map() 中调用类方法
- ESLint prefer-arrow-callback on array.map
- Array.map没有'似乎无法处理未初始化的数组
- 为什么使用Array.prototype.map.call而不是Array.map.call
- Array.map 希望将值映射到无
- Array.map 和 Javascript 中的提升函数
- 正在使用 Array.map 作为 foreach 的良好做法
- 为什么 Array.map 似乎不适用于未定义值的数组
- 等待 array.map 等待中的异步进程
- JavaScript: parseInt's radix mystery with Array.map
- IE11 中的 Array.map() 出错
- JS:Array.map 不要添加到数组中
- Array.map+try/catch传递了引用赋值延迟
- array.forEach.call vs array.map.call
- IE8标准不支持array.map函数
- JavaScript Array.map(parseInt)导致NaN错误
- 对对象数组使用Array.map()