现在,我要做的是写一个Array.prototype
函数union( array_to_union )
,我想在下面调用它:
var a = [1,2,3];
a.union([2,3,4]).union([1,3,4]) ......
结果将是那些数组的并集,我想知道我该怎么做?
我只知道我应该使用Array.prototype.union = function( array_to_union){.....}
。
答案 0 :(得分:2)
这个怎么样:
Array.prototype.union = function (second) {
return second.reduce(function (array, currentValue) {
if (this.indexOf(currentValue) === -1) array.push(currentValue);
return array;
}, this).sort();
};
var a = [1,2,3];
a = a.union([2,3,4]).union([1,3,4]);
a = [1, 2, 3, 4]
它还对数组进行排序,正如您的示例在评论中所示。
答案 1 :(得分:-1)
可以链接在一起的联盟功能:
Array.prototype.union = function(array_to_union) {
for (i = 0; i < array_to_union.length; i++) {
this.push(array_to_union[i]);
}
return this;
}
var a = [1,2,3];
a.union([4,5,6]).union([7,8,9]);
注意:在这种情况下,union函数只是将1个数组添加到另一个上(不关心排序或不同的值)。
JS摆弄了更多例子:http://jsfiddle.net/enW2Y/1/