试图在数组Javascript的filterfunction中使用IndexOf的精确字符串

试图在数组Javascript的filterfunction中使用IndexOf的精确字符串,javascript,arrays,json,filter,indexof,Javascript,Arrays,Json,Filter,Indexof,我目前正在为json数组创建一个带有过滤器选项的搜索函数: if (ploc != " - " ) { var filteredarray7 = filteredarray6.filter(function(orte){ return orte['Painting Location'].indexOf(ploc) !== -1 ; }); } else { var filteredarray7 = filteredarray6; } 变量ploc可以是1

我目前正在为json数组创建一个带有过滤器选项的搜索函数:

if (ploc != " - " ) {
    var filteredarray7 = filteredarray6.filter(function(orte){
        return orte['Painting Location'].indexOf(ploc) !== -1 ;
    });
} else {
    var filteredarray7 = filteredarray6;
}
变量ploc可以是1-12之间的一个数字,或者字符串“-”,[“绘制位置”]可以是类似“1;2;4;12;”、“1”或“3;5;12”的字符串,而该字符串中的每个数字类似于绘制位置的一个类别

我的问题是:我需要做什么更改,它返回字符串中包含例如1的所有对象,但不返回包含10、11、12的对象,除非1也是字符串的一部分


由于我英语不好,我已经很久没有用外语写东西了

如果我理解正确,你最好使用正则表达式

return orte['Painting Location'].search(new Regexp('(^|;)\s*' + ploc + '\s*($|;)')) != -1;
或:


在这里阅读有关JavaScript的内容。

好消息是您已经有了一个分隔符
用于存储到“绘制位置”的内容。您可以将该值除以
然后确定搜索变量
ploc
是否在结果中。您还可以执行
新建RegExp('\\b'+(ploc)+'\\b')。测试(orte['Painting Location'])
以利用Regex中的“单词边界”,而不是试图考虑空格、冒号、管道,etc@josh.trow是的,我同意。
\b
是最优雅的变体。但它无法检查分隔符是否为“;”。无论如何,如果我们确信这一点,你的方式很容易。
return !!orte['Painting Location'].match(new Regexp('(^|;)\s*' + ploc + '\s*($|;)'));