如何重新定义+;JavaScript中数组上的运算符?
假设点使用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
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,您一定已经考虑过该解决方案了\