我有一个应用程序,您可以在其中添加人们的名字、姓氏和电话号码(例如“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
关于javascript - 搜索数组并返回结果的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8348686/