Mon*_*ata 10 javascript arrays jquery
var array1 = [1, 2, 3, 4, 5, 6];
var array2 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
Run Code Online (Sandbox Code Playgroud)
我有两个像上面这样的数组.现在我想在MVC 4中使用jQuery执行以下操作.
如果两个数组的每个元素相等,则显示消息/警报.例如"所有记录已经存在."
如果两个数组的每个元素都不同,那么只需将它们全部添加到"VAR"中,例如var resultset = ....
(将存储7,8,9)
如果两个数组之间通用的元素很少,那么公共元素显示带元素的消息,例如"记录1,2,3,4,5,6已经存在"并在"VAR"中添加不同的元素,例如var resultset = ....
(其中7 ,8,9将存储).消息和差异元素集合都将同时执行.
Sud*_*n S 32
试试这个:
var array1 = [1, 2, 3, 4, 5, 6],
array2 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var common = $.grep(array1, function(element) {
return $.inArray(element, array2 ) !== -1;
});
console.log(common); // returns [1, 2, 3, 4, 5, 6];
var array3 = array2.filter(function(obj) { return array1.indexOf(obj) == -1; });
// returns [7,8,9];
Run Code Online (Sandbox Code Playgroud)
这是我的版本
function diff(arr1, arr2) {
var obj = {}, matched = [],
unmatched = [];
for (var i = 0, l = arr1.length; i < l; i++) {
obj[arr1[i]] = (obj[arr1[i]] || 0) + 1;
}
for (i = 0; i < arr2.length; i++) {
var val = arr2[i];
if (val in obj) {
matched.push(val);
} else {
unmatched.push(val);
}
}
// Here you can find how many times an element is repeating.
console.log(obj);
// Here you can find what are matching.
console.log(matched);
// Here you can check whether they are equal or not.
console.log('Both are equal ? :' +
matched.length === a.length);
// Here you can find what are different
console.log(unmatched);
}
Run Code Online (Sandbox Code Playgroud)
如果你经常做这种事情,你可能会对Set对象感兴趣,这使得这类东西变得非常简单:
var array1 = [1, 2, 3, 4, 5, 6];
var array2 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var common = new Set(array1).intersection(array2).keys();
Run Code Online (Sandbox Code Playgroud)
开源Set对象(一个简单的源文件)在这里:https://github.com/jfriend00/Javascript-Set/blob/master/set.js
除了intersection()
这里使用的方法,它还有各种其他的集合操作(并集,差异,子集,超集,添加,删除......).
工作演示:http://jsfiddle.net/jfriend00/5SCdD/
归档时间: |
|
查看次数: |
36757 次 |
最近记录: |