#javascript #json
#javascript #json
Вопрос:
У меня есть некоторый javascript:
datasetID устанавливается из значения url.
Я получаю данные в формате json.
const datasetID = urlParams.get('datasetID')
var data;
$.getJSON("json/data.json", function(json){
data = json;
});
Затем я хочу отфильтровать данные json на основе datasetID, затем извлечь значение, присвоенное другому атрибуту vernacularName
, и присвоить ему значение const.
const record = data.filter(d => d.datasetID === datasetID);
const vernacularName =
Как далеко я нахожусь? Предложения приветствуются.
пример кода
[
{
"datasetID":"A1"
"language":"en",
"accessRights":"CC BY 4.0",
"vernacularName":"goat"
}
]
Комментарии:
1. может быть, без малейшего представления о том, как выглядят эти данные
const vernacularName = filename[0].vernacularName
?? или, возможно, вам нужен массивfind
вместо этого, если там будет не более одной записи, которая соответствует условию… тогда это было быconst vernacularName = filename.vernacularName
2. добавлен некоторый пример кода для данных
3. а datasetID это уникальный идентификатор поэтому будет возвращена одна запись 1
4. переименовано
filename
вrecord
так что это имеет больше смысла5. хорошо … комментарий остается
const vernacularName = record[0].vernacularName
в силе — если вы не используете arrayfind
, то это будетconst vernacularName = record.vernacularName
Ответ №1:
Фильтр во внешнем интерфейсе не является хорошим вариантом (допустим data.json
, он большой), поэтому, если бы вы могли отфильтровать его во внутреннем интерфейсе перед извлечением. Например, я отправляю ajax-запрос с параметром ID: datasetID
:
const datasetID = urlParams.get('datasetID')
var data;
$.ajax({
type: "POST",
url: "/getjson",
dataType: "json",
success: function (json) {
record = json
if (record.length === 1)
vernacularName = record[0]["vernacularName"]
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log('error');
},
data: {
ID: datasetID
},
cache: false
})
Если вы не можете настроить серверную часть, а datasetID уникален, этого должно быть достаточно:
if (record.length === 1)
vernacularName = record[0]["vernacularName"]