我刚刚想出了一个针对javascript的inArray实现,它运行正常。 它很奇怪但很短,我觉得这有点不对劲,但我不确定它是什么:
Array.prototype.inArray = function (itm) {
return this.join("|").match( new RegExp('\\b'+itm+'\\b','ig') );
}
更新:这应该是inArray功能的一般实现。我不确定哪个更贵,做循环或创建正则表达式
答案 0 :(得分:0)
我不知道您的实施要求是什么,但请记住这些:
您将匹配阵列成员的字符串版本,而非实际成员
\\b
将允许任何分词,包括标点符号,给出误报。
它只对数组中的单个单词条目有用,否则可能会出现误报
您将返回null
或数组“匹配”。不确定这是否是你想要的。
我确信这些只是划伤表面。
如果您正在实施一个非常狭窄的功能,它可以工作,但不适合一般用途。
答案 1 :(得分:0)
使用underscore.js intersection()
方法查明数组是否包含元素甚至是一系列元素:
if(_.intersection(yourArray, [item]).length){
//do stuff
}
您也可以通过将它们推入数组来检查多个项目。它还涵盖任何类型的对象