Han*_*ans 8 javascript arrays comparison
假设我们有:
array1 = ['A', 'B', 'C', 'D', 'E']; array2 = ['C', 'E'];
Run Code Online (Sandbox Code Playgroud)
有没有一个经过验证的快速解决方案来比较两个数组,返回一个数组,而两个数组中都没有出现值(这里是C和E).所以:
array3 = ['A', 'B', 'D']
Run Code Online (Sandbox Code Playgroud)
应该是解决方案的输出.(可能涉及jquery)
谢谢.
Han*_*ans 13
我接受了马修斯解决方案,但不想忽略我刚刚发现的另一种更快的解决方案.
var list1 = [1, 2, 3, 4, 5, 6];
var list2 = ['a', 'b', 'c', 3, 'd', 'e'];
var lookup = {};
for (var j in list2) {
lookup[list2[j]] = list2[j];
}
for (var i in list1) {
if (typeof lookup[list1[i]] != 'undefined') {
alert('found ' + list1[i] + ' in both lists');
break;
}
}
Run Code Online (Sandbox Code Playgroud)
来源:优化循环以比较两个阵列
Mat*_*hen 11
这是一个集合差异.一个简单的实现是:
jQuery.grep(array1, function(el)
{
return jQuery.inArray(el, array2) == -1;
});
Run Code Online (Sandbox Code Playgroud)
这是O(m*n),其中那些是数组的大小.您可以在O(m + n)中执行此操作,但您需要使用某种哈希集.您可以将JavaScript对象用作字符串的简单哈希集.对于相对较小的阵列,上述应该没问题.
归档时间: |
|
查看次数: |
11201 次 |
最近记录: |