我有一个字符串值数组。我想循环遍历数组并返回任何不仅与字符串值匹配,而且包含值的值。对此最好的方法是什么?
这是我到目前为止所搜索的确切值。
我正在使用这个逻辑是几个匹配网址的地方。部分网站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;
}
答案 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;
};