检查变量是否包含数组的任何值
Check if variable contains any value of array
我有两个这样的数组;
arr1 = ["foo.com", "bar.com"],
arr2 = ["//test.net/index.html", "http://www.bar.com", "https://foo.com/example.js"]
我正在对arr2
进行迭代,我想省略那些包含arr1
的任何值的值。
目前我使用的是indexOf
,但如果值不完全匹配,那就不起作用。
$.each(arr2, function(k,v){
if(arr1.indexOf(v) == -1)
console.log(v);
});
我希望上面的代码能输出
//test.net/index.html
因为它是CCD_ 4的唯一不包含CCD_。我做错了什么?
我会为此写两个循环:
arr1 = ["foo.com", "bar.com"],
arr2 = ["//test.net/index.html", "http://www.bar.com", "https://foo.com/example.js"]
$.each(arr2, function(x,y){
var found = false;
$.each(arr1, function(k,v){
if(!(y.indexOf(v) == -1)){
found = true;
return false;
}
});
if(!found){
console.log(y);
}
found= false;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
您可以使用filter+一些ES5 Array方法:
var arr1 = ["foo.com", "bar.com"],
arr2 = ["//test.net/index.html", "http://www.bar.com", "https://foo.com/example.js"];
var result = arr2.filter(function(val) {
return !arr1.some(function(el) {
return val.indexOf(el) !== -1;
});
});
alert(result);
对ES5的支持从IE9+开始,但如果您需要它在旧的IE中工作,您可以使用polyfills(请参阅我提供的链接),或者用简单的for
循环重写some
部分并使用$.grep
而不是Array.prototyp.filter
是非常简单的。
似乎您使用的是indexOf的Array版本,如果匹配不准确,则该版本不起作用。有了更多的设置,你可以使用字符串版本的indexOf
function compareValues (arr1, arr2){
var res = false;
$.each(arr2, function(k,v) {
checkAgainstArray(arr1, v);
});
function checkAgainstArray(arr1, value) {
$.each(arr1, function(k, v) {
if(value.indexOf(v) !== -1){
res = true;
}
});
}
return res;
}
//稍后在上
var isValueInArray=compareValue(arr1,arr2);
(代码没有经过测试),但我希望这能帮助
尝试使用javascript RegExp为每个数组元素进行匹配
http://www.w3schools.com/js/js_regexp.asp
相关文章:
- Lodash 从值数组中查找数组中的值
- 使用Undercore获取属性值数组
- 选择具有值数组的所有元素的最有效方法
- 使用jquery grep过滤具有值数组的json对象
- 值中的任何匹配数组
- 如何使用JQuery将值数组插入到数据库中
- 创建属性值数组,其中属性名称以特定字符串结尾
- 如何在jqueryajax中发布值数组
- 如何在不赋值数组变量的情况下读取数组数据
- Lodash 从与值数组不匹配的数组中获取项目
- 下划线,将对象列表转换为对象值数组
- 将键/值数组中的对象与另一个对象(键/值)进行比较
- 使用Node中的Q promise库对值数组顺序调用/执行相同的函数;并返回带有结果的新数组/集合
- 创建一个计算值数组,该数组绑定到AngularJS中的其他输入
- 将JavaScript对象转换为值数组
- 将选定值数组发送到控制器-MVC
- 将键、值对象转换为仅值数组
- 如何将JSON数组转换为键值数组
- 使用一个键的值数组过滤多个javascript对象
- javascript唯一值数组中的唯一随机值