数组

时间:2016-04-18 04:50:58

标签: arrays angularjs

我在角度

中有这样的数组
app.myStringArray=
    [   'abcdefg',
        '123456',
        'qwerty'
    ];

目前我有一个通用的方法来检查像这样的数组

app.factory('commons', function () {


    var commons= {};

    //Checks if the current url is 
    commons.checkString= function (str) {

        if (app.myStringArray.indexOf(str) > -1) {
            return true; //current string is in list
        } else {
            return false;
        }
    }

    return commons;
}
);

如果我发送完整字符串'abcdefg''123456''qwerty',则此方法有效。

即使我获得了一些字符串,例如:'bcd',我怎样才能使它工作?

2 个答案:

答案 0 :(得分:2)

要检查字符串是否包含其他字符串,您可以使用String.indexOf()或ES6 String.includes()

要检查数组中的至少一个项是否与谓词匹配,您可以使用Array.some(),或者只是自己遍历数组。

ES6解决方案:

function checkString(str) {    
  return myStringArray.some(s => s.includes(str));
}

ES5解决方案:

function checkString2(str) {    
  return myStringArray.some(function(s) {
    return s.indexOf(str) > -1;
  });
}

答案 1 :(得分:1)

遍历数组并检查数组中每个字符串的indexOf(str)。不需要Angular。

var array = ['abcdefg', '123456', 'qwerty'];

function checkString(str) {
  
  for (var i = 0; i < array.length; i++) {
    if (array[i].indexOf(str) > -1) {
      return true;  
    }
  }
  
  return false;
}

alert(checkString("bcd"));