我试图从 JSON 文件中提取数据。我无法更改数据在文件中键入或标记的方式,因为它是从 CSV 文件转换而来的。
我的 JSON 数据如下所示(我正在使用 grep 过滤器,然后将其存储在一个变量中,但为简洁起见,除非有人需要查看它,否则我不会显示该部分):
var medicare = {
"": "",
"80101": "NC",
"80104": "NC",
"80152": "24.61",
"80154": "22.72",
"80299": "18.83",
"82055": "14.85",
"82145": "9.71",
"82542": "16.01",
"82646": "23.91",
"82649": "23.91",
"83805": "24.23",
"83840": "13.04",
"83887": "22.26",
"83925": "26.74",
"83992": "20.20",
"99080": "NC",
"99358": "NC",
"Carrier Type": "Medicare",
"G0434": "12.17",
"State": "Minnesota",
"id": 122
}
我已经设法使用 $.getJSON() 加载文件,并且我还设法使用 $.grep() 制作了一个过滤器,以按状态和运营商类型过滤数组。现在我需要创建一个能够返回任何给定键值的函数。
function findInside( array, key ) {
return array[key]; // <-- This is my problem.
}
我可以通过运行来返回值:
console.log(findInside(medicare, "80101"))
我只需要能够获得价值。我认为我不需要做任何循环等。我对 JavaScript 还是很陌生,并且正在努力解决这个问题,它应该很容易。
提前致谢!
编辑:这是除 JSON 文件之外的所有相关代码代码。我希望我没有像现在这样使用window.numbers,但我对此很陌生,我不知道任何其他方法可以让它工作。
jQuery(document).ready(function($) {
// First things first, fill the state picker.
$.each(usStates, function(i, option) {
$('#state').append($('<option/>').attr("value", option.abbreviation).text(option.name));
});
// Next we need to load in the JSON Data file.
$.getJSON('data.json', function(data) {
window.numbers = data
});
$("#state").change(function(){
//Lets get the stuff in the fields.
state = $("#state").val();
stateName = $("#state option:selected").text();
//Filter all through all the data.
var workersComp = filterData("Worker's Comp", stateName);
var commercial = filterData("Commercial", stateName);
var medicare = filterData("Medicare", stateName);
var medicaid = filterData("Medicaid", stateName);
console.log(medicare);
console.log(findInside(medicare, "80101")); // undefined
});
})
//Functions
function filterData( i, d) {
var r = $.grep( window.numbers, function(val, index) {
return val.State === d;
});
var output = $.grep(r, function(val, index) {
return val["Carrier Type"] === i;
});
return output
}
function findInside( array, key ) {
return array[key];
}