gpt4 book ai didi

javascript - 自定义过滤器函数无法调用未定义的方法

转载 作者:行者123 更新时间:2023-12-02 17:49:50 25 4
gpt4 key购买 nike

这是模板中 Angularjs 过滤器的简单场景:

<input ng-model="query">         
<li ng-repeat="item in filtered = (prosItems.results |filter:mySearch)">

因为我需要仅从 prosItems.results 中过滤特定字段,所以我在 Controller 中创建了一个特定函数:

$scope.mySearch = function (item){
if ($scope.query) {
var searchTerm = $scope.query.toLocaleLowerCase();
return item.firstName.toLowerCase().indexOf(searchTerm)!==-1 ||
item.lastName.toLowerCase().indexOf(searchTerm)!==-1 ||
item.company.toLowerCase().indexOf(searchTerm)!==-1 ||
item.city.toLowerCase().indexOf(searchTerm)!==-1 ||
item.state.toLowerCase().indexOf(searchTerm)!==-1 ||
item.country.toLowerCase().indexOf(searchTerm)!==-1;
} else {
return true;
}
};

问题是当迭代的任何属性未定义时,例如,如果用户没有在条目上指定“公司”,那么当我在输入字段中键入内容时,我就会收到该错误:

Cannot call method 'toLowerCase' of undefined

如果我只有一个属性可以迭代槽,我可以想象解决方案,但由于我有几个属性,我看不到这样做的实际方法。您认为有什么方法可以实际解决这个问题吗?

最佳答案

像这样的事情怎么样:

var fields = ['firstName', 'lastName', 'company', 'etc'];
for(var i = 0, l = fields.length; i < l; i ++){
if(item[fields[i]] && item[fields[i]].toLowerCase().indexOf(searchTerm)!==-1){
return true;
}
}
return false;

关于javascript - 自定义过滤器函数无法调用未定义的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21461611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com