我写了一个函数initMap(response){....}
。响应是一个对象数组,看起来像
In console :
(6)[{…}, {…}, {…}, {…}, {…}, {…}]
0: {latitude: "17.0009", longitude: "82.2108"}
1: {latitude: "17.0504", longitude: "82.1659"}
2: {latitude: "17.1529", longitude: "82.2228"}
3: {latitude: "17.1621", longitude: "82.1921"}
4: {latitude: "17.0004", longitude: "82.2211"}
5: {latitude: "17.1235", longitude: "82.1926"}
length: 6
__proto__: Array(0)
我想要
这样的数组的输出 (6) [{…}, {…}, {…}, {…}, {…}, {…}]
0: {lat: 17.0009, lng: 82.2108}
1: {lat: 17.0504, lng: 82.1659}
2: {lat: 17.1529, lng: 82.2228}
3: {lat: 17.1621, lng: 82.1921}
4: {lat: 17.0004, lng: 82.2211}
5: {lat: 17.1235, lng: 82.1926}
length: 6
__proto__: Array(0)
为此,我尝试使用replace
var eventlist = JSON.stringify(response);//Jsonresult
console.log(eventlist);
var eventstring = new String();
eventstring = eventlist.replace(/"/g, "");
events = eventstring.replace(/latitude/g, "lat").replace(/longitude/g, "lng");
console.log(events);
这样做的时候,我是通过这种方式在控制台中得到结果的
[{lat:17.0009,lng:82.2108},{lat:17.0504,lng:82.1659},{lat:17.1529,lng:82.2228},{lat:17.1621,lng:82.1921},{lat:17.0004,lng:82.2211},{lat:17.1235,lng:82.1926}]
它看起来像字符串,但我需要输出
(6) [{…}, {…}, {…}, {…}, {…}, {…}]
0: {lat: 17.0009, lng: 82.2108}
1: {lat: 17.0504, lng: 82.1659}
2: {lat: 17.1529, lng: 82.2228}
3: {lat: 17.1621, lng: 82.1921}
4: {lat: 17.0004, lng: 82.2211}
5: {lat: 17.1235, lng: 82.1926}
length: 6
__proto__: Array(0)
如何执行此操作,请给我一个想法。
答案 0 :(得分:3)
使用.map
遍历数组并为每个项目创建一个新对象:
const output = arr.map(({ latitude, longitude }) => ({
lat: Number(latitude),
lng: Number(longitude)
});
答案 1 :(得分:1)
您可以使用map和destructuring assignment
let arr = [{latitude: "17.0009", longitude: "82.2108"},{latitude: "17.0504", longitude: "82.1659"},{latitude: "17.1529", longitude: "82.2228"},{latitude: "17.1621", longitude: "82.1921"},{latitude: "17.0004", longitude: "82.2211"},{latitude: "17.1235", longitude: "82.1926"}]
let op = arr.map(({latitude:lat, longitude:lng}) => ({lat:+lat, lng:+lng}))
console.log(op)
答案 2 :(得分:0)
使用Array#map
函数来重新创建所需的对象。使用parseFloat
隐蔽地编号为数字
var arr =[{latitude: "17.0009", longitude: "82.2108"},{latitude: "22.0009", longitude: "33.2108"}];
var res = arr.map(a=> ({lat:parseFloat(a.latitude),lng:parseFloat(a.longitude)}))
console.log(res)
答案 3 :(得分:0)
没有比地图更好的选择了。语法糖的另一种选择-
var arr =[{latitude: "17.0009", longitude: "82.2108"},{latitude: "22.0009", longitude: "33.2108"}];
let result = arr.map(({ latitude, longitude })=>{
return {
lat: +latitude,
lng: +longitude
}
});
console.log(result);