[英]How to redefine the + operator on Arrays in JavaScript?
假设使用JavaScript Array
将点表示为[x,y]
,我如何在点上定义+
运算符,以便:
[1,2] + [5,10] == [6,12]
JavaScript没有覆盖内置算术运算符的工具。
你可以通过覆盖.valueOf()
和.toString()
方法获得一些有限的技巧,但我无法想象你怎么能做你所要求的。
你当然可以编写一个函数来完成它。
一个不错的'加'方法怎么样? 这并不关心数组有多少索引,但任何非数字索引都转换为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
*/
我知道这不是你想要做的,但解决你的问题的方法是这样做:
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 );
请注意,此代码不是最终的。 我看到一些问题:
祝好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.