按子字符串过滤的错误结果
Wrong result for filtering by substring
我正在创建一个过滤输入,其中根据 keyUp 带来结果。这就是我通过 Backbone 的集合进行过滤的方法:
var Brand = Backbone.Model;
var Brands = Backbone.Collection.extend({
model: Brand,
filterByName: function () {
return this.filter(function (model) {
return model.get('name').indexOf('h') > -1;
});
}
});
var fiat = new Brand ({ name: 'Fiat' });
var honda = new Brand ({ name: 'Honda' });
var chevrolet = new Brand ({ name: 'Chevrolet' });
var peugeot = new Brand ({ name: 'Peugeot' });
var mitsubishi = new Brand ({ name: 'Mitsubishi' });
var hyundai = new Brand ({ name: 'Hyundai' });
var brands = new Brands ([ fiat, honda, chevrolet, peugeot, mitsubishi, hyundai ]);
console.log(brands.filterByName());
Playground: http://jsfiddle.net/Lgcb0skm/
重点是:例如,当我键入 h
时,它只会给我带来 Mitsubishi 和 Chevrolet,而不是所有可能的结果,比如Honda、Hyundai等为什么?建议?
试试这个:
return model.get('name').toLowerCase().indexOf('h') > -1;
简答'H' != 'h'
。如果要进行不区分大小写的匹配,则需要将文本字符串小写:
return this.filter(function (model) {
return model.get('name').toLowerCase().indexOf('h') > -1;
});
我正在创建一个过滤输入,其中根据 keyUp 带来结果。这就是我通过 Backbone 的集合进行过滤的方法:
var Brand = Backbone.Model;
var Brands = Backbone.Collection.extend({
model: Brand,
filterByName: function () {
return this.filter(function (model) {
return model.get('name').indexOf('h') > -1;
});
}
});
var fiat = new Brand ({ name: 'Fiat' });
var honda = new Brand ({ name: 'Honda' });
var chevrolet = new Brand ({ name: 'Chevrolet' });
var peugeot = new Brand ({ name: 'Peugeot' });
var mitsubishi = new Brand ({ name: 'Mitsubishi' });
var hyundai = new Brand ({ name: 'Hyundai' });
var brands = new Brands ([ fiat, honda, chevrolet, peugeot, mitsubishi, hyundai ]);
console.log(brands.filterByName());
Playground: http://jsfiddle.net/Lgcb0skm/
重点是:例如,当我键入 h
时,它只会给我带来 Mitsubishi 和 Chevrolet,而不是所有可能的结果,比如Honda、Hyundai等为什么?建议?
试试这个:
return model.get('name').toLowerCase().indexOf('h') > -1;
简答'H' != 'h'
。如果要进行不区分大小写的匹配,则需要将文本字符串小写:
return this.filter(function (model) {
return model.get('name').toLowerCase().indexOf('h') > -1;
});