如何在Javascript中编写自我链函数

时间:2014-06-12 00:24:37

标签: javascript

现在,我要做的是写一个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){.....}

2 个答案:

答案 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/