Bet*_*min 37 javascript arrays jquery
所以,我正在使用Jquery,并且有两个数组都有多个值,我想检查第一个数组中的所有值是否都存在于第二个数组中.
例如,例1 ......
数组A包含以下值
34,78,89
数组B包含以下值
78,67,34,99,56,89
这将返回真实
......例2:
数组A包含以下值
34,78,89
数组B包含以下值
78,67,99,56,89
这将返回false
......例3:
数组A包含以下值
34,78,89
数组B包含以下值
78,89
这将返回false
到目前为止,我试图解决这个问题:
任何人都可以投入任何光线都会很棒.
小智 73
原生JavaScript解决方案
var success = array_a.every(function(val) {
return array_b.indexOf(val) !== -1;
});
Run Code Online (Sandbox Code Playgroud)
您需要兼容性补丁every,indexOf如果您支持旧版浏览器,包括IE8.
完整的jQuery解决方案
var success = $.grep(array_a, function(v,i) {
return $.inArray(v, array_b) !== -1;
}).length === array_a.length;
Run Code Online (Sandbox Code Playgroud)
ES2015解决方案
可以使用ES2015的箭头函数语法及其.includes()方法缩短上面的本机解决方案:
let success = array_a.every((val) => array_b.includes(val))
Run Code Online (Sandbox Code Playgroud)
ggr*_*ner 51
function containsAll(needles, haystack){
for(var i = 0 , len = needles.length; i < len; i++){
if($.inArray(needles[i], haystack) == -1) return false;
}
return true;
}
containsAll([34, 78, 89], [78, 67, 34, 99, 56, 89]); // true
containsAll([34, 78, 89], [78, 67, 99, 56, 89]); // false
containsAll([34, 78, 89], [78, 89]); // false
Run Code Online (Sandbox Code Playgroud)
pul*_*0ne 26
一个单行测试所有元素arr1存在于arr2......
使用es6:
var containsAll = arr1.every(i => arr2.includes(i));
Run Code Online (Sandbox Code Playgroud)
没有es6:
var containsAll = arr1.every(function (i) { return arr2.includes(i); });
Run Code Online (Sandbox Code Playgroud)
dat*_*arl 14
我注意到问题是关于用jQuery解决这个问题,但是如果其他任何不限于jQuery的人出现,那么使用下划线js就有一个简单的解决方案.
使用下划线js你可以做:
_.intersection(ArrayA, ArrayB).length === ArrayA.length;
Run Code Online (Sandbox Code Playgroud)
来自文档:
intersection_.intersection(*arrays)计算所有数组交集的值列表.结果中的每个值都存在于每个数组中.
_.intersection([1,2,3],[101,2,1,10],[2,1]); => [1,2]
因此,如果ArrayA中缺少ArrayA中的某个项目,那么交集将比ArrayA短.
您可以拿一个Set并再次检查所有项目。
const
containsAll = (needles, haystack) =>
needles.every(Set.prototype.has, new Set(haystack));
console.log(containsAll([105, 112, 103], [106, 105, 103, 112]));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67787 次 |
| 最近记录: |