如何在json中找到价值

Jay*_*iya 12 javascript json

如何使用波纹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

voi*_*oid 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));
Run Code Online (Sandbox Code Playgroud)

.indexOf即使不使用,也可以直接对邮政编码进行操作.split(",").但是,它也会匹配,2600但情况并非如此.所以,使用split.

使用json[x].postcode条件确保对象中存在邮政编码字段.否则,如果它不存在,它将给出错误.


Ani*_*bhi 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");
Run Code Online (Sandbox Code Playgroud)

JSFIDDLE


Cod*_*rPi 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)
Run Code Online (Sandbox Code Playgroud)