如何重新定义+;JavaScript中数组上的运算符?

如何重新定义+;JavaScript中数组上的运算符?,javascript,arrays,addition,Javascript,Arrays,Addition,假设点使用JavaScriptArray表示为[x,y],我如何在点上定义+操作符,以便: [1,2] + [5,10] == [6,12] JavaScript没有覆盖内置算术运算符的功能 通过重写.valueOf()和.toString()方法,您可以使用一些有限的技巧,但我无法想象您如何做到所要求的 当然,您可以编写一个函数来执行此操作。我知道这并不完全是您希望执行的操作,但解决问题的方法是执行以下操作: var arrayAdd = function() { var array

假设点使用JavaScript
Array
表示为
[x,y]
,我如何在点上定义
+
操作符,以便:

[1,2] + [5,10] == [6,12]

JavaScript没有覆盖内置算术运算符的功能

通过重写
.valueOf()
.toString()
方法,您可以使用一些有限的技巧,但我无法想象您如何做到所要求的


当然,您可以编写一个函数来执行此操作。

我知道这并不完全是您希望执行的操作,但解决问题的方法是执行以下操作:

var arrayAdd = function() {
    var arrays = arguments,
        result = [0, 0];

    for( var i = 0, s = arrays.length; i < s; i++ ) {
        for( var j = 0, t = arrays[ i ].length; j < t; j++ ) {
            result[ j ] += parseInt( arrays[ i ].shift(), 10 );
        }
    }

    return result;
};

var sum = arrayAdd( [1,2], [5,10] ); //Should return [6, 12]

console.log( sum );
var arrayAdd=function(){
变量数组=参数,
结果=[0,0];
for(var i=0,s=arrays.length;i
请注意,此代码不是最终代码。我看到一些问题:

  • 结果数组的初始值应该是动态的
  • 如果数组长度不相等,我还没有测试代码

  • 祝你好运

    一个好的“加号”方法怎么样? 这不在乎每个数组有多少个索引, 但任何非数字的都将转换为0

    Array.prototype.plus= function(arr){
        var  L= Math.max(this.length,arr.length);
        while(L){
            this[--L]= (+this[L] || 0)+ (+arr[L] || 0);
        }
        return this;
    };
    
    [1, 2].plus([5, 10])
    
    /*  returned value: (Array)
    [6,12]
    */
    
    [1, 2].plus([5, 10]).plus(['cat',10,5])
    
    /*  returned value: (Array)
    6,22,5
    */
    

    你没有。即使运算符重载是可能的,并且您可以对现有类型进行特殊处理,您也不应该这样做,因为它会破坏大量代码。嗯,根据您的声誉@Misha,您一定已经考虑过该解决方案了\