如何使用波纹json数据中的邮政编码来精确状态名称;
var data = '{
"1": {
"state": "VIC",
"postcode": "2600,2603,2605,2606"
},
"2": {
"state": "NSW",
"postcode": "2259,2264"
}
}'
Run Code Online (Sandbox Code Playgroud)
如何找到state的postcode;
如果我搜索邮政编码,2600如果获得结果VIC
删除''你的不是一个有效的字符串,删除''使其成为一个有效的对象文字,然后你可以迭代对象的键,检查它是否具有匹配的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));Run Code Online (Sandbox Code Playgroud)
.indexOf即使不使用,也可以直接对邮政编码进行操作.split(",").但是,它也会匹配,2600但情况并非如此.所以,使用split.
使用json[x].postcode条件确保对象中存在邮政编码字段.否则,如果它不存在,它将给出错误.
试试这样吧
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");
Run Code Online (Sandbox Code Playgroud)
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)Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18375 次 |
| 最近记录: |