2012-03-31 120 views

回答

5

JavaScript没有用于覆盖内置的算术运算符的设施。

有一些有限的技巧,你可以通过覆盖.valueOf().toString()方法来拉动,但我无法想象你如何能够做你所要求的。

你当然可以写一个函数来做到这一点。

0

我知道这是你想做不完全是,但你的问题的解决办法是做这样的事情:

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); 

请注意,此代码是不是最终的。我看到一些问题:

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

好运!

+0

嗯,根据你的声誉@Misha,你一定已经想过这个解决方案了。 :\ – Cybrix 2012-03-31 14:46:33

1

一个不错的'加'方法怎么样? 这并不关心有多少指标要么数组, 但是任何非数值转换为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 
*/