Я довольно новичок в JS и сообществе стеков, мне трудно собирать значения, которые соответствуют условию, из моего локального файла json.Исходный json довольно большой, поэтому это первые две строки моего json:
[{
"park_name": "Acadia National Park",
"latitude": 44.35,
"longitude": -68.21,
"species_id": "ACAD-1000",
"common_names": "Moose",
"occurrence": "Present",
"abundance": "Rare",
"nativeness": "Native",
"conservation_status": null,
"location": "44.35, -68.21"
},
{
"park_name": "Acadia National Park",
"latitude": 44.35,
"longitude": -68.21,
"species_id": "ACAD-1001",
"common_names": "Northern White-Tailed Deer, Virginia Deer, White-Tailed Deer",
"occurrence": "Present",
"abundance": "Abundant",
"nativeness": "Native",
"conservation_status": null,
"location": "44.35, -68.21"
}
]
Я пытаюсь создать карту листовки с использованием градуированных точек.[Чем больше видов соответствуют условию, тем больше точек].Мой первый слой, который «ДОЛЖЕН ВИДЕТЬ ПАРКИ», я хочу получить виды, которые occurrence = "Present"
и abundance = "Rare"
(это существует в других строках, которые здесь не показаны) и поместить точки на карту в соответствии с их местоположением.Есть много видов, которые соответствуют этому условию в каждом парке, например, в «Национальном парке Акадия». 141 вид соответствует этому условию, поэтому мне нужно только одну точку, оцененную по числу подходящих видов.Я могу получить вид, но не могу получить широту и долготу для одного парка, который содержит 141 вид, а для других парков он такой же, у меня есть группа видов, но мне нужен только один [lat, lon]
.Это мой код для получения условий; метаданные
var visit = {};
var visit_loc = {};
for (var i = 0; i < metadata.length; i++) {
var names = metadata[i].park_name;
var abundance = metadata[i].abundance;
var occurrence = metadata[i].occurrence;
var locations = metadata[i].location;
var latitude = metadata[i].latitude;
var longitude = metadata[i].longitude;
if (occurrence === "Present" && abundance === "Rare") {
if (!visit[names] && !visit_loc[location]) {
visit[names] = 1;
visit_loc[location] = 1;
} else {
visit[names]++;
visit_loc[location]++;
}
}
}
- это мой ответ от моего локального json.Вывод, который я получаю из этой формулы, выглядит примерно так:
Acadia National Park: 141
Arches National Park: NaN
Badlands National Park: NaN
Big Bend National Park: NaN
Biscayne National Park: NaN
...
, а для visit_loc
вывод такой:
visit_loc
{http://localhost:8000/: 10768}
http://localhost:8000/: 10768
__proto__:
constructor: ƒ Object()
hasOwnProperty: ƒ hasOwnProperty()
isPrototypeOf: ƒ isPrototypeOf()
propertyIsEnumerable: ƒ propertyIsEnumerable()
toLocaleString: ƒ toLocaleString()
toString: ƒ toString()
valueOf: ƒ valueOf()
__defineGetter__: ƒ __defineGetter__()
__defineSetter__: ƒ __defineSetter__()
__lookupGetter__: ƒ __lookupGetter__()
__lookupSetter__: ƒ __lookupSetter__()
get __proto__: ƒ __proto__()
set __proto__: ƒ __proto__()
Понятия не имею, что это значит.
Так вот, парки, которые идут после первого, дают мне NaN, но после того, как я изменяю свой код на это:
if (occurrence === "Present" && abundance === "Rare") {
if(!visit[names]){
visit[names] = 1;
} else{
visit[names]++;
}
Я получаю выходные данные, значения для каждого парка, выходные очередина это:
Acadia National Park: 141
Arches National Park: 132
Badlands National Park: 38
Big Bend National Park: 154
Biscayne National Park: 389
Что хорошо, я получаю значения, которые хочу, но не могу получить значения широты и долготы для парков, соответствующих критериям.
Извините за сохранение этого такдолго и сложно, это первый вопрос, который я здесь задаю, есть ли у кого-нибудь идеи о том, как получить значения широты и долготы для каждого парка только один раз.Спасибо.