Как найти значение в json
Как правильно указать имя состояния, используя почтовый индекс в приведенных ниже json-данных;
var data = '{
"1": {
"state": "VIC",
"postcode": "2600,2603,2605,2606"
},
"2": {
"state": "NSW",
"postcode": "2259,2264"
}
}'
Как найти state
на postcode
;
если я ищу почтовый индекс 2600
, если получить результат, например VIC
Ответы
Ответ 1
Удалите ''
, так как ваш не является допустимой строкой, удалите ''
, чтобы сделать его допустимым литералом объекта, затем вы можете перебирать ключи объекта и проверять, имеет ли он соответствующий POSTCODE, и если он тогда верните соответствующее состояние.
var data = {
"1": {
"state": "VIC",
"postcode": "2600,2603,2605,2606"
},
"2": {
"state": "NSW",
"postcode": "2259,2264"
}
};
function getState(data, postcode){
for(var x in data){
if(data[x].postcode && data[x].postcode.split(",").indexOf(postcode.toString())!=-1) return data[x].state;
}
return "Not Found";
}
alert(getState(data, "2600"));
alert(getState(data, 2264));
Ответ 2
Попробуйте это
var data = '{"1": { "state": "VIC","postcode": "2600,2603,2605,2606"}, "2": {"state": "NSW","postcode": "2259,2264"}}';
var jsObj = JSON.parse(data);
var find = "2600";
var values = Object.keys(jsObj).filter(function(x) {
return jsObj[x].postcode.indexOf(find) > -1;
}).map(function(x) {
return jsObj[x].state;
});
console.log(values.length > 0 ? values[0] : "not found");
JSFIDDLE
Ответ 3
function findState(data, postcode) {
var postcode = postcode.toString()
for (var k in data) {
var postcodes = data[k].postcode.split(",")
if (postcodes.indexOf(postcode) != -1)
return data[k].state
}
}
// Demo Output
var data = '{"1":{"state":"VIC","postcode":"2600,2603,2605,2606"},"2":{"state":"NSW","postcode":"2259,2264"}}'
var dataObj = JSON.parse(data)
var state = findState(dataObj, 2600)
document.write(state)
Ответ 4
Хорошо, теперь.. Вы просто просите нас помочь вам с домашним заданием:) Хорошо, что в хорошем настроении.
Сначала введите правильную строку JSON и проанализируйте ее в объекте с помощью JSON.parse
. Затем повторите этот объект и разделите строку почтового индекса и найдите состояние!
var data = ......
var resp = JSON.parse(data);
function getStateByPostcode(postcode) {
var state = "";
for(var i in resp) {
if(resp.hasOwnProperty(i)) {
var postcodes = resp[i]['postcode'].split(',');
if(postcodes.indexOf(postcode) !== -1) {
return resp[i]['state'];
}
}
}
return state;
}
Ответ 5
Вы можете попробовать что-то вроде этого:
function searchInObject(object, searchKey, searchValue) {
for (var i in object) {
if (object[i][searchKey].indexOf(searchValue) > -1) {
return object[i];
}
}
}
(function() {
var data = {
"1": {
"state": "VIC",
"postcode": "2600,2603,2605,2606"
},
"2": {
"state": "NSW",
"postcode": "2259,2264"
}
}
var pin = "2600";
var result = searchInObject(data, "postcode", pin);
console.log(result.state);
pin = "2259";
result = searchInObject(data, "postcode", pin);
console.log(result.state);
})()