Javascript循环遍历搜索字符的数组

时间:2015-03-19 13:43:23

标签: javascript arrays loops

我有一个字符串值数组。我想循环遍历数组并返回任何不仅与字符串值匹配,而且包含值的值。对此最好的方法是什么?

这是我到目前为止所搜索的确切值。

我正在使用这个逻辑是几个匹配网址的地方。部分网站getLocation返回/ about,/ services等... 还有一个管理部分,它返回/ adminabout,/ adminservices等。

var getLocation = $location.$$path;
var isCustom    = ['about', 'services', 'volunteer', 'contact', 'give', 'blog'];

if(!isCustom.indexOf(getLocation) == -1){ 
  $scope.isCustom = true || false;  
}

2 个答案:

答案 0 :(得分:2)

使用过滤器获取不包含getLocation值的匹配元素。

var getLocation = $location.$$path.replace('/','');
var isCustom    = ['about', 'services', 'volunteer', 'contact', 'give', 'blog'];

var matchedResult = isCustom.filter(function(value) {
    return value.indexOf(getLocation) < 0
});

由于问题有些不清楚,我假设您正在尝试查找数组项中是否存在字符串。

var getLocation =$location.$$path.replace('/', ''); // assuming it to be admin
var isCustom = ["/adminabout","adminservices","about","services"]


// matches if the string is present in any part of the array item
var matchedResult = isCustom.filter(function(value) {
    return value.indexOf(getLocation) !== -1
});

console.log(matchedResult); //["/adminabout", "adminservices"]

答案 1 :(得分:0)

我提出了一个解决方案,该解决方案匹配isCustom值中是否包含getLocation值中的值。

var searchThroughArray = (function (getLocation) {
var log = [];  
angular.forEach(isCustom, function(item, key) {
      var getLocation = $location.$$path.replace('/', '');
      if(getLocation.contains(item) == true){
        this.push(item);
    }
}, log);
if (0 < log.length){ 
    return true;
};
})();


if(searchThroughArray){
  $scope.isCustom = true; 
}else{
  $scope.isCustom = false; 
};