2012-03-31 121 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 
*/