我想扩展Array.prototype以包含一个从2x2矩阵(JavaScript术语中的列表列表)中选择行或列的方法。该方法应该通过引用返回选定的Array元素,因此结果可用于动态更改Array中的某些值。
Array的slice()方法不会通过Reference
返回a = [[1,2],[3,4]];
a.slice(0,1) = [0,0];
ReferenceError: invalid assignment left-hand side
我失败的尝试
Array.prototype.row = function(whichrow) {
var result = this[whichrow];
return result;
}
仅在需要值时才能正常工作
a.row(0)
[1, 2]
然而,显然它只返回行的值而不是行本身(如果我在这里有意义)。所以当我尝试为它分配一个新值时,它会返回错误
a.row(0) = [0,0];
ReferenceError: invalid assignment left-hand side
有人有任何建议吗?
答案 0 :(得分:1)
我建议你实现你的行函数:
Array.prototype.row = function(whichrow, newvalue) {
if( newvalue !== undefined ) {
this[whichrow] = newvalue;
}
return this[whichrow];
}
并像这样使用它:
a.row(0, [0,0]);
并检索:
a.row(0)