您能告诉我如何使用Underscore.js查找属性的第一次出现(不需要精确匹配)吗?
我试过this.But,它只返回完全匹配的属性。假设在我的列表中,它有townName,比如Rocky Point,.But,我需要选择Rocky also.So,我怎么能做到呢?
var schoolDistrict = _.find(vm.schoolDistricts, function (d) { return d.townName
== result.data[0].PropertyData.School; }); (例如)
vm.schoolDistricts = [townName:'Rocky Point',...]
result.data[0].PropertyData.School = 'Rocky'发布于 2016-08-19 15:13:04
OP的反馈:我已经使用了如下所示的,并且运行良好:)
var schoolDistrict = _.find(vm.schoolDistricts, function (s) { return
s.townName.toLowerCase().indexOf(result.data[0].PropertyData.School.toLowerCase(
)) !== -1; });另一种方式:
如果其中一个字符串是另一个字符串的子字符串,则可以执行基本检查。还可以将字符串小写,以便进行更好的搜索:
var schoolDistricts = [
{townName:'Rocky Point'},
{townName: 'Roc'}
];
var searchString = 'Rocky'.toLowerCase();
var res = _.find(schoolDistricts, function(s) {
var townName = s.townName.toLowerCase();
return townName.indexOf(searchString) !== -1 || searchString.indexOf(townName) !== -1;
});
console.log(res);<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
发布于 2016-08-20 20:50:19
使用RegExp模式测试名称是否包含文本,并使用i标志忽略大小写:
var schoolDistricts = [{
townName: 'South Rock'
}, {
townName: 'Red Herring'
}, {
townName: 'Rocky Point'
}, {
townName: 'Whatnot'
}];
var school = 'Rocky'; // replacement for result.data[0].PropertyData.School
var pattern = new RegExp(school, 'i');
var result = _.find(schoolDistricts, function(d) {
return pattern.test(d.townName);
});
console.log(result);<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
https://stackoverflow.com/questions/39041626
复制相似问题