您可以使用Array.prototype.sort() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort进行真正的数字排序并使用Array.prototype.filter() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/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;
});
};
请注意,自定义排序函数仅适用于数字元素,因此,如果您想将其用于字符串或将字符串与数字混合,则必须对其进行更新以考虑这些情况,但其余部分不应发生太大变化。
像这样使用它:
var arr1 = [1, 3, 4, 5, 6];
var arr2 = [4, 5, 6, 8, 9, 10];
var arrAll = concatArraysUniqueWithSort(arr1, arr2);
arrAll
现在将是[1, 3, 4, 5, 6, 8, 9, 10]
DEMO http://jsfiddle.net/jj7XZ/- 连接2个数组,排序并删除重复项
我确信有很多方法可以做到这一点。这只是我能想到的最简洁的。