javascript - 搜索数组并返回结果的最佳方法

标签 javascript arrays search for-loop

我有一个应用程序,您可以在其中添加人们的名字、姓氏和电话号码(例如“new Member('Thomas', 'Jonsson', '0709454543'”)。在该应用程序中,可以在网络上显示成员页面,但现在我还希望能够使用名字、姓氏或电话号码搜索成员。

所有成员对象都存储在一个数组中,在下面的代码中,我循环遍历该数组,并将成员名字、姓氏和电话号码添加到另一个数组中,我正在循环遍历该数组。

首先,由于某种原因,我在控制台中收到以下错误消息(“未捕获的类型错误:对象 0 没有方法“匹配”)。第二件事是我不知道如何(如果我让它工作并在搜索时获得匹配)我可以将搜索结果引用到成员数组中的成员。我希望您能理解我的意思,并且非常感谢您的帮助。

是的,如果您有任何更好的搜索方法的提示,我当然会非常高兴。

function searchMember(searchWord){
        var searchArray = [];

        for (var i = 0; i < members.length; i++){
        var firstname = members[i].firstname;
        var lastname = members[i].lastname;
        var phonenr = members[i].phonenr;

        searchArray.push(firstname);
        searchArray.push(lastname);
        searchArray.push(phonenr);
        }

        for (var j = 0; j < searchArray.length; j++) {
            if (searchArray[j].match (searchWord)){
                alert("Found member!");
            }
        }
    }
}

最佳答案

您的 TypeError 必须来自您的实际数据 - 一切真的都是字符串吗?

对于搜索 - 你不需要做两个循环;您可以在第一次迭代时进行检查。要获取结果,您可以返回函数中的成员。调用函数时,函数返回的内容会被替换。

function searchMember(searchWord) {
    for (var i = 0; i < members.length; i++) {
        var firstname = members[i].firstname;
        var lastname  = members[i].lastname;
        var phonenr   = members[i].phonenr;

        if (firstname.match(searchWord)  // firstname matches
         || lastname.match(searchWord)   // or lastname matches
         || phonenr.match(searchWord)) { // or phonenr matches
            return members[i]; // if either of the three, return this member
        }
    }
}

然后你可以这样做:

var someMember = searchMember("D"); // search for "D"

alert(someMember.phonenr); // alert phonenr of found member

http://jsfiddle.net/Fu7ED/

关于javascript - 搜索数组并返回结果的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8348686/

相关文章:

Java实现树搜索

javascript - 我希望微调器能够正确显示数字

arrays - 大型数组中的几何着色器错误

javascript - 如何通过在jquery中传递选项文本来获取下拉列表的特定选项值

javascript - 通过动态枚举其他对象的键来创建新对象

python - 访问 Numpy 数组中中间四个元素的最快方法?

javascript - JavaScript 映射 : TryGet wanted 中的双重搜索与未定义

r - 如何搜索每次都不完全相同的模式?

javascript - 使用react-konva在Canvas上制作GIF动画

javascript - 如何旋转标签