一种函数,它将在数组中搜索字母并返回这些字母所在的位置

时间:2013-11-04 18:41:15

标签: javascript arrays string function search

我创建了一个函数,无论大小写如何,都会从字符串中搜索单个字母。这是它的样子。

function match(string, pattern) {

    string = string.toLowerCase();
    pattern = pattern.toLowerCase();
    var patternarray = pattern.split("");
    for (i = 0; i < pattern.length; i++) {
        if (patternarray[i] >= "a" && patternarray[i] <= "z") {
            if (string.indexOf(patternarray[i]) == -1) return false
        }
    }
    return true
}

现在我想做类似的事情,除了这次我将搜索一个数组,而不是返回true / false我想返回一个新的数组,其中包含弹出字符串的位置。

例如,如果我的变量内容是[“Oranges”,“Apples”,“Bananas”]并且我的搜索是“n”,则函数将返回[0,2]。我是JavaScript的初学者,所以彻底的解释会有所帮助。

谢谢!

2 个答案:

答案 0 :(得分:0)

Underscorejs有一个应该为你处理这个问题的功能。只需看看过滤功能。它能够返回一个包含通过真值测试的项目的新数组。

var aArray = _.filter(['asdf','ddd','afsf'], function(item){
  return (item.indexOf('a') !== -1);
}

答案 1 :(得分:0)

function matchArray(array, pattern) {
    var i,
        len = array.length,
        result = [];

    for (i = 0; i < len; ++i) {
        if (match(array[i], pattern)) {
            result.push(i);
        }
    }
    return result;
}