将Javascript响应转换为Array/Map

use*_*352 2 javascript arrays dictionary object elasticsearch

我从Javascript ElasticSearch查询得到以下响应,我需要将它映射到下面的结构.有没有比我目前正在做的更有效的方法呢?

谢谢

我需要映射到的结构:(大约700个)

[{
    "coordinates": ["48", "37"],
    "name": "something",
    "population": "501"
},
Run Code Online (Sandbox Code Playgroud)

返回我的数据的当前结构:

[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
 ...
Run Code Online (Sandbox Code Playgroud)

我正在尝试但失败了:

 var results= [{
                "key": 'coordinates',
                resp.coordiantes[0],
                resp.coordinates[1],
                "key": 'name',
                resp.name                    
                })
            }];
Run Code Online (Sandbox Code Playgroud)

Mar*_*lli 6

假设您的数据存储在myData变量中,您可以使用该Array.prototype.map方法来操作它并实现您想要的效果.这是一个解决方案:

result = myData.map(function(obj) {
    return {
        coordinates: obj._source.coordinates,
        name: obj.name,
        population: obj.population
    }
});
Run Code Online (Sandbox Code Playgroud)

这很简单!结果将是这样的:

[
    {
        "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
    } //, ...
]
Run Code Online (Sandbox Code Playgroud)