解析对象数组以格式化数据
Parsing array of objects to format data
我有一组具有这种结构的城市(由 CMS 提供):
const cities = [
{
city: 'Genova',
coordinates: '{\'type\':\'Point\',\'coordinates\':[8.9473343,44.4023918]}',
countryIsoCode: 'it',
description: 'test',
isInitialCity: true,
}, {
city: 'Barcelona',
coordinates: '{\'type\':\'Point\',\'coordinates\':[2.0951271,41.3397004]}',
countryIsoCode: 'es',
description: 'description',
isInitialCity: false,
}, {
city: 'Sydney',
coordinates: '{type\':\'Point\',\'coordinates\':[151.2158203,-33.8704156]}',
countryIsoCode: 'au',
description: 'Sydney description',
isInitialCity: false,
}];
我想解析 coordinates
位置以获得更具可扩展性的对象并使其属性嵌套。
这是我试过的:
cities.map(city=>JSON.parse(city.coordinates))
但是我打印的时候好像没有效果。但是,如果我手动打印像 console.log(JSON.parse(cities[0].coordinates))
这样的位置,它会显示格式化结果,如下面的屏幕截图所示:
如何通过循环使其自动生成?
This is what I've tried:
cities.map(city=>JSON.parse(city.coordinates))
map()
为您创建了一个全新的、仅包含坐标的独立数组,之后您将其丢弃。
However, if I manually print a position like console.log(JSON.parse(cities[0].coordinates))
[...] How can I make it automatically via loop?
好吧,把它放在一个循环中:
for(let city of cities)
city.coordinates = JSON.parse(city.coordinates);
但是,您的示例数据在语法上不正确,对象末尾有 ,}
-s(在 true
/false
之后),而假定的 JSON 数据不是JSON,喜欢
{type':'Point','coordinates':[151.2158203,-33.8704156]}
^it has no pair, and it should be double quote anyway, all of them
{"type":"Point","coordinates":[151.2158203,-33.8704156]} <-- this is JSON
const cities = [
{
city: 'Genova',
coordinates: '{\'type\':\'Point\',\'coordinates\':[8.9473343,44.4023918]}',
countryIsoCode: 'it',
description: 'test',
isInitialCity: true,
}, {
city: 'Barcelona',
coordinates: '{\'type\':\'Point\',\'coordinates\':[2.0951271,41.3397004]}',
countryIsoCode: 'es',
description: 'description',
isInitialCity: false,
}, {
city: 'Sydney',
coordinates: '{type\':\'Point\',\'coordinates\':[151.2158203,-33.8704156]}',
countryIsoCode: 'au',
description: 'Sydney description',
isInitialCity: false,
}];
//for(let city of cities)
// city.coordinates = JSON.parse(city.coordinates);
var x=cities.map(city=>JSON.parse(JSON.stringify(city.coordinates)))
console.log("result :"+(JSON.stringify(x)))
// result :["{'type':'Point','coordinates':[8.9473343,44.4023918]}","{'type':'Point','coordinates':[2.0951271,41.3397004]}","{type':'Point','coordinates':[151.2158203,-33.8704156]}"]
我认为可能发生的情况是您正确地绘制了地图,但没有返回结果。
例如 mynumbers.map(num => num++)
根本不会影响 mynumbers
。您必须将 map
的结果分配给另一个变量...
const parsedCities = cities.map(city=>JSON.parse(city.coordinates))
现在您的新 parsedCities
变量将看起来像您想要的那样,并且原始 cities
数组将保持不变。
我有一组具有这种结构的城市(由 CMS 提供):
const cities = [
{
city: 'Genova',
coordinates: '{\'type\':\'Point\',\'coordinates\':[8.9473343,44.4023918]}',
countryIsoCode: 'it',
description: 'test',
isInitialCity: true,
}, {
city: 'Barcelona',
coordinates: '{\'type\':\'Point\',\'coordinates\':[2.0951271,41.3397004]}',
countryIsoCode: 'es',
description: 'description',
isInitialCity: false,
}, {
city: 'Sydney',
coordinates: '{type\':\'Point\',\'coordinates\':[151.2158203,-33.8704156]}',
countryIsoCode: 'au',
description: 'Sydney description',
isInitialCity: false,
}];
我想解析 coordinates
位置以获得更具可扩展性的对象并使其属性嵌套。
这是我试过的:
cities.map(city=>JSON.parse(city.coordinates))
但是我打印的时候好像没有效果。但是,如果我手动打印像 console.log(JSON.parse(cities[0].coordinates))
这样的位置,它会显示格式化结果,如下面的屏幕截图所示:
如何通过循环使其自动生成?
This is what I've tried:
cities.map(city=>JSON.parse(city.coordinates))
map()
为您创建了一个全新的、仅包含坐标的独立数组,之后您将其丢弃。
However, if I manually print a position like
console.log(JSON.parse(cities[0].coordinates))
[...] How can I make it automatically via loop?
好吧,把它放在一个循环中:
for(let city of cities)
city.coordinates = JSON.parse(city.coordinates);
但是,您的示例数据在语法上不正确,对象末尾有
,}
-s(在 true
/false
之后),而假定的 JSON 数据不是JSON,喜欢
{type':'Point','coordinates':[151.2158203,-33.8704156]}
^it has no pair, and it should be double quote anyway, all of them
{"type":"Point","coordinates":[151.2158203,-33.8704156]} <-- this is JSON
const cities = [
{
city: 'Genova',
coordinates: '{\'type\':\'Point\',\'coordinates\':[8.9473343,44.4023918]}',
countryIsoCode: 'it',
description: 'test',
isInitialCity: true,
}, {
city: 'Barcelona',
coordinates: '{\'type\':\'Point\',\'coordinates\':[2.0951271,41.3397004]}',
countryIsoCode: 'es',
description: 'description',
isInitialCity: false,
}, {
city: 'Sydney',
coordinates: '{type\':\'Point\',\'coordinates\':[151.2158203,-33.8704156]}',
countryIsoCode: 'au',
description: 'Sydney description',
isInitialCity: false,
}];
//for(let city of cities)
// city.coordinates = JSON.parse(city.coordinates);
var x=cities.map(city=>JSON.parse(JSON.stringify(city.coordinates)))
console.log("result :"+(JSON.stringify(x)))
// result :["{'type':'Point','coordinates':[8.9473343,44.4023918]}","{'type':'Point','coordinates':[2.0951271,41.3397004]}","{type':'Point','coordinates':[151.2158203,-33.8704156]}"]
我认为可能发生的情况是您正确地绘制了地图,但没有返回结果。
例如 mynumbers.map(num => num++)
根本不会影响 mynumbers
。您必须将 map
的结果分配给另一个变量...
const parsedCities = cities.map(city=>JSON.parse(city.coordinates))
现在您的新 parsedCities
变量将看起来像您想要的那样,并且原始 cities
数组将保持不变。