合并两个数组,存储唯一元素,并在jQuery中进行排序

Mon*_*ata 7 javascript arrays merge jquery

var Arr1 = [1,3,4,5,6];

var Arr2 = [4,5,6,8,9,10];
Run Code Online (Sandbox Code Playgroud)

我试图合并这两个数组,输出即将到来 [1,3,4,5,6,4,5,6]

我用$.merge(Arr1, Arr2);这件作品合并它们.使用alert我可以看到如上所示的合并数组.

现在我的问题是如何获得以下输出: [1,3,4,5,6,8,9,10]

即元素应该是唯一的,并且以我提到的相同方式排序.

请帮忙.

Nop*_*ope 9

您可以使用Array.prototype.sort()进行实数数字排序,并使用Array.prototype.filter()仅返回唯一元素.

你可以将它包装成一个类似于这样的帮助器:

var concatArraysUniqueWithSort = function (thisArray, otherArray) {
    var newArray = thisArray.concat(otherArray).sort(function (a, b) {
        return a > b ? 1 : a < b ? -1 : 0;
    });

    return newArray.filter(function (item, index) {
        return newArray.indexOf(item) === index;
    });
};
Run Code Online (Sandbox Code Playgroud)

请注意,自定义排序功能仅适用于数字元素,因此,如果您要将其用于字符串或将字符串与数字混合,则必须更新它,以便将这些方案考虑在内,但其余部分不应发生太大变化.

像这样使用它:

var arr1 = [1, 3, 4, 5, 6];
var arr2 = [4, 5, 6, 8, 9, 10];

var arrAll = concatArraysUniqueWithSort(arr1, arr2);
Run Code Online (Sandbox Code Playgroud)

arrAll 现在将 [1, 3, 4, 5, 6, 8, 9, 10]


DEMO - 连接2个数组,排序和删除重复项


我确信有很多方法可以做到这一点.这只是我能想到的最简洁.