我有一个JSON提要(people.json),它会吐出以下内容:
[
{
"id":0,
"firstName":"Alison",
},
{
"id":1,
"firstName":"Fred",
}
]
等
为清晰起见编辑**
我有一个名为searchTerm
的var。在JavaScript中,如何找到firstName
匹配searchTerm
的数组中的所有记录?
答案 0 :(得分:0)
这取决于“搜索”究竟是什么, 如果搜索是个人实体,或者搜索是人员ID ..
看看这个Array.filter
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
function readJsonFile(path)
{
var file = new XMLHttpRequest();
file.open("GET", path, false);
file.onreadystatechange = function (){
if(file.readyState === 4){
if(file.status === 200 || file.status == 0){
var mydata = JSON.parse(file.responseText);
var result = mydata.filter(function (entry) {
return entry.firstname == searchTerm;
});
}
}
}
file.send(null);
}
现在您应该使用本地文件路径执行该功能。
readJsonFile("./people.json");
如果文件代码的读取令人困惑 - 请告诉我,我会更好地构建它。
结果将是一个“人员”数组,其中searchTerm的值为其firstName。
答案 1 :(得分:0)
如果您要查找与firstName
var json = [
{
"id":0,
"firstName":"Alison",
},
{
"id":1,
"firstName":"Fred",
}
];
function findByName(name) {
return json.find( function(f) { return f.firstName == name});
}
console.log( findByName('Fred') );

答案 2 :(得分:0)
您可以使用过滤功能找到与您的搜索字词匹配的所有对象:
var searchTerm = "Alison";
var alisons = arr.filter(x => {
return x.firstName === searchTerm;
});
Filter使用回调函数来过滤掉项目,并且只包含符合给定条件的新数组中的项目。如果您不熟悉ES6语法,那么这只是:
var searchTerm = "Alison";
var alisons = arr.filter(function(x){
return x.firstName === searchTerm;
});
返回的变量alisons将是数组中名字为Alison的所有对象的数组。
如果您感到好奇,过滤器功能会因为变量提升而了解searchTerm。我想提一下,以防你需要为自己的代码移动:https://www.w3schools.com/js/js_hoisting.asp
希望这有帮助!