如何匹配数组javascript中的单词?

时间:2013-10-24 04:26:34

标签: javascript html

我有javascript数组。 我需要匹配并从这个数组中选择单词。

var tomatch = "";

var sets= new Array()
     sets[0]='nnd';
     sets[1]='nndha';
     sets[2]='ch';
     sets[3]='gn';

作为一个例子...... 时

  var tomatch = "nn";

tomatchsets[0] & sets[1]需要tomatch = "c" 写出结果。

sets[2]时一样,它应与tomatch = "dh"匹配 我怎么能这样做?

我不需要奥得河 如果sets[1],它也可以是{{1}}

我对javascript没有很好的了解。

怎么做?

7 个答案:

答案 0 :(得分:2)

indexof(“要匹配的字符串”)将返回字符串的索引,如果找不到字符串,则返回-1。只需遍历数组并检查indexof(“要匹配的字符串”)的返回值是否为-1。

sets[i].indexOf("nn")!=-1

答案 1 :(得分:2)

使用以下函数返回匹配单词的数组,否则提醒no match

function find_match(to_match)
{
    match_array=new Array();
    for(i in sets)
    {
        if(sets[i].indexOf(to_match)!=-1)
            match_array.push(sets[i]);
    }
    return (match_array.length==0? alert('No match'): match_array);
}

要查找字符串'n'的匹配项,您需要致电find_match('n'),这将返回nnd,nndha,gn

答案 2 :(得分:0)

var tomatch = "nn";
var sets= new Array()
     sets[0]='nnd';
     sets[1]='nndha';
     sets[2]='ch';
     sets[3]='gn';    
for(var i=0; i < sets.length ; i++){
       if(sets[i].indexof(tomatch) !== -1){
         return sets[i];
       }
    }

答案 3 :(得分:0)

使用过滤器:

> sets.filter(function(x) { return x.indexOf("nn") !== -1; })
[ 'nnd', 'nndha' ]
> sets.filter(function(x) { return x.indexOf("c") !== -1; })
[ 'ch' ]

答案 4 :(得分:0)

它应该是:

   function isInArray(string){
     return sets.indexOf(string)>-1;      
   }

   alert(isInArray("nn"));

或者与jQuery:

jQuery.inArray("nnd",sets);

它将返回“nnd”

的索引

答案 5 :(得分:0)

这不像@Nirk的解决方案那样整洁(我总是忘记Array.filter)但你可以根据他的回答用Array.filter替换我的测试函数:

function test(a, f) {
  var i = 0,
      result = [];

  for (i=0; i<a.length; i++) {
    result.push(f(a[i]));
  }

  return result;
}

function txtMatch(s) {
  var pattern = new RegExp('' + s + '');
  return function(t) {
    return pattern.test(t);
  };
}

var sets= new Array()
sets[0]='nnd';
sets[1]='nndha';
sets[2]='ch';
sets[3]='gn';

var toMatchFirst = test(sets, txtMatch('nn'));
var toMatchSecond = test(sets, txtMatch('c'));

console.log(toMatchFirst.join(', '));
console.log(toMatchSecond.join(', '));

我刚刚创建了一个快速字符串匹配函数,然后遍历数组,测试每个函数,并返回结果数组。

答案 6 :(得分:0)

谢谢大家,但这是我想要的,我认为匹配cmd适合我的任务。

  var sugest = "";
  var matchkeyword = "nn";

  var sets= new Array()
    sets[0]='nnd';
    sets[1]='nndha';
    sets[2]='ch';
    sets[3]='gn';
    sets[4]='nch';
    sets[5]='fu';
    sets[6]='Nui';


for(var i=0; i < sets.length ; i++){    

        if(sets[i].match(matchkeyword) != null) {
                    sugest = sugest + "<br>" + sets[i];
        }
}

 y=document.getElementById("sugdiv");
 y.innerHTML = sugest;