JS - 在数组中查找项目

时间:2017-07-28 15:37:23

标签: javascript reactjs

我有一个JSON提要(people.json),它会吐出以下内容:

[  
   {  
      "id":0,
      "firstName":"Alison",
   },
   {  
      "id":1,
      "firstName":"Fred",
   }
]

为清晰起见编辑**

我有一个名为searchTerm的var。在JavaScript中,如何找到firstName匹配searchTerm的数组中的所有记录?

3 个答案:

答案 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

希望这有帮助!