JS求數組差集的幾種方法


第一種:如果不考慮IE8的兼容性完全可以使用Foreach ,此方法求出arr1 減去 arr2的差集,

arr1 = [1,2,3,4];
arr2 = [1,2,3];
var subSet = function (arr1, arr2) { var set2 = new Set(arr2); var subset = []; arr1.forEach(function(val, index) { if (!set2.has(val)) { subset.push(val); } }); return subset; };
//結果等於4

第二種是使用JQ 的merge和grep的配合使用求差集,兼容IE8 、chrome等主流游覽器

 

var alpha = [1, 2, 3, 4],
beta = [1,2,3];

$.arrayIntersect = function(a, b)
{
return $.merge($.grep(a, function(i)
{
return $.inArray(i, b) == -1;
}) , $.grep(b, function(i)
{
return $.inArray(i, a) == -1;
})
);
};

window.console && console.log( $.arrayIntersect(alpha, beta) );
//結果等於4

第三種使用ES6 的set 方法類似與foreach方法

var subSet = function(arr1, arr2) {
    var set1 = new Set(arr1);
    var set2 = new Set(arr2);

    var subset = [];

    for (let item of set1) {
        if (!set2.has(item)) {
            subset.push(item);
        }
    }

    return subset;
};

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM