使用join和match在javascript中实现inArray有什么问题?

时间:2012-10-17 20:57:01

标签: javascript arrays

我刚刚想出了一个针对javascript的inArray实现,它运行正常。 它很奇怪但很短,我觉得这有点不对劲,但我不确定它是什么:

Array.prototype.inArray = function (itm) {
  return this.join("|").match( new RegExp('\\b'+itm+'\\b','ig')  );
}

更新:这应该是inArray功能的一般实现。我不确定哪个更贵,做循环或创建正则表达式

2 个答案:

答案 0 :(得分:0)

我不知道您的实施要求是什么,但请记住这些:

  • 您将匹配阵列成员的字符串版本,而非实际成员

  • \\b将允许任何分词,包括标点符号,给出误报。

  • 它只对数组中的单个单词条目有用,否则可能会出现误报

  • 您将返回null或数组“匹配”。不确定这是否是你想要的。

我确信这些只是划伤表面。

如果您正在实施一个非常狭窄的功能,它可以工作,但不适合一般用途。

答案 1 :(得分:0)

使用underscore.js intersection()方法查明数组是否包含元素甚至是一系列元素:

if(_.intersection(yourArray, [item]).length){
    //do stuff
}

您也可以通过将它们推入数组来检查多个项目。它还涵盖任何类型的对象