Javascript 在数组中搜索字符串并返回这些对象的好方法
所以我已经完成了我一直在开发的这个来宾列表前端应用程序。我最不想做的事情是允许传递一个字符串来按名称筛选列表。因此,通过订阅用户在字段中输入一些名称,我应该能够使用这个函数以不同的方式搜索数组。请记住,self.guests是一个guest对象数组Javascript 在数组中搜索字符串并返回这些对象的好方法,javascript,arrays,knockout.js,Javascript,Arrays,Knockout.js,所以我已经完成了我一直在开发的这个来宾列表前端应用程序。我最不想做的事情是允许传递一个字符串来按名称筛选列表。因此,通过订阅用户在字段中输入一些名称,我应该能够使用这个函数以不同的方式搜索数组。请记住,self.guests是一个guest对象数组 self.displayResults = ko.computed(function(){ if(self.displayTypeOf() == 'slice'){ var ary = self.guests.slice(se
self.displayResults = ko.computed(function(){
if(self.displayTypeOf() == 'slice'){
var ary = self.guests.slice(self.startValue(),self.endValue());
console.log(ary)
return ary
}else if(self.displayTypeOf() == 'string'){
//Code I need goes here
}
});
您可以看到,通常情况下,列表是使用列表的切片部分计算的,当用户开始在输入中键入内容时,我将使用我要求的搜索数组函数覆盖并更新此计算列表
提前谢谢 你可以用
我建议使用
ko.utils.arrayFilter
实用函数进行过滤:
self.displayResults = ko.computed(function(){
if(self.displayTypeOf() == 'slice'){
var ary = self.guests.slice(self.startValue(),self.endValue());
console.log(ary)
return ary
}else if(self.displayTypeOf() == 'string'){
// Init filter
var filter = self.SomeValue();
var ary = ko.utils.arrayFilter(self.guests(), function(item) {
return ko.utils.stringStartsWith(item.name().toLowerCase(), filter);
});
console.log(ary);
return ary;
}
});
阅读更多关于ko-utils方法的信息:Artem的答案可能是您想要的,但为了清楚起见,由于Guest是一个对象数组,Guest对象看起来像什么/字符串将与什么对象变量进行比较?谢谢,先生,虽然幸运的是,我能够立即发现stringStartsWith不包含在min CDN中。我必须从源头上复制它。
self.displayResults = ko.computed(function(){
if(self.displayTypeOf() == 'slice'){
var ary = self.guests.slice(self.startValue(),self.endValue());
console.log(ary)
return ary
}else if(self.displayTypeOf() == 'string'){
// Init filter
var filter = self.SomeValue();
var ary = ko.utils.arrayFilter(self.guests(), function(item) {
return ko.utils.stringStartsWith(item.name().toLowerCase(), filter);
});
console.log(ary);
return ary;
}
});