如何使用bellow json数据中的邮政编码来精确州名;
var data = '{
"1": {
"state": "VIC",
"postcode": "2600,2603,2605,2606"
},
"2": {
"state": "NSW",
"postcode": "2259,2264"
}
}'
如何通过state
找到postcode
;
如果我搜索邮政编码2600
,则会获得VIC
答案 0 :(得分:9)
删除''
,因为你的字符串不是有效字符串,删除''
使其成为有效的对象字面值,然后你可以迭代对象的键并检查它是否具有匹配的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));
即使不使用.indexOf
,您也可以直接对邮政编码.split(",")
进行操作。但是,它也会与2600
匹配,但不应该是这种情况。因此,请使用split
。
使用json[x].postcode
条件确保对象中存在邮政编码字段。否则,如果它不存在,它将给出错误。
答案 1 :(得分:7)
试试这个
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
强>
答案 2 :(得分:5)
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)
答案 3 :(得分:1)
现在好了..你只是要求我们帮你做作业:)好心情好心情。
首先获取正确的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;
}
答案 4 :(得分:1)
您可以尝试这样的事情:
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);
})()