尝试在数组的过滤器函数中使用 IndexOf 的精确字符串 Javascript
trying to use exact strings for IndexOf within a filterfunction for an array Javascript
我目前正在为 json 数组创建一个带有过滤器选项的搜索函数:
if (ploc != " - " ) {
var filteredarray7 = filteredarray6.filter(function(orte){
return orte['Painting Location'].indexOf(ploc) !== -1 ;
});
} else {
var filteredarray7 = filteredarray6;
}
变量 ploc 可以是 1-12 的数字或字符串“-”,['Painting Location']可以是字符串,如“1; 2; 4; 12;”,“1”或“ 3; 5; 12" 而此字符串中的每个数字都类似于绘画位置的类别。
我的问题:我需要做哪些更改,它 returns 所有在其字符串中包含例如 1 的对象,但不包括包含 10、11、12 的对象,除非 1 也是字符串的一部分.
抱歉我的英语不好,我已经很久没有用外语写东西了。
如果我没理解错的话,你最好使用正则表达式。
return orte['Painting Location'].search(new Regexp('(^|;)\s*' + ploc + '\s*($|;)')) != -1;
或者:
return !!orte['Painting Location'].match(new Regexp('(^|;)\s*' + ploc + '\s*($|;)'));
在此处阅读 JavaScript 中关于 RegExp 的内容。
我目前正在为 json 数组创建一个带有过滤器选项的搜索函数:
if (ploc != " - " ) {
var filteredarray7 = filteredarray6.filter(function(orte){
return orte['Painting Location'].indexOf(ploc) !== -1 ;
});
} else {
var filteredarray7 = filteredarray6;
}
变量 ploc 可以是 1-12 的数字或字符串“-”,['Painting Location']可以是字符串,如“1; 2; 4; 12;”,“1”或“ 3; 5; 12" 而此字符串中的每个数字都类似于绘画位置的类别。
我的问题:我需要做哪些更改,它 returns 所有在其字符串中包含例如 1 的对象,但不包括包含 10、11、12 的对象,除非 1 也是字符串的一部分.
抱歉我的英语不好,我已经很久没有用外语写东西了。
如果我没理解错的话,你最好使用正则表达式。
return orte['Painting Location'].search(new Regexp('(^|;)\s*' + ploc + '\s*($|;)')) != -1;
或者:
return !!orte['Painting Location'].match(new Regexp('(^|;)\s*' + ploc + '\s*($|;)'));
在此处阅读 JavaScript 中关于 RegExp 的内容。