在JavaScript中,如何通过引用从方法返回数组的一部分?

在JavaScript中,如何通过引用从方法返回数组的一部分?,javascript,arrays,Javascript,Arrays,我想扩展Array.prototype以包含一个从2x2矩阵(JavaScript术语中的列表列表)中选择行或列的方法。该方法应通过引用所选数组元素返回,因此结果可用于动态更改数组中的某些值 数组的slice()方法不通过引用返回 a = [[1,2],[3,4]]; a.slice(0,1) = [0,0]; ReferenceError: invalid assignment left-hand side 我失败的尝试 Array.prototype.row = function(whi

我想扩展Array.prototype以包含一个从2x2矩阵(JavaScript术语中的列表列表)中选择行或列的方法。该方法应通过引用所选数组元素返回,因此结果可用于动态更改数组中的某些值

数组的slice()方法不通过引用返回

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

有人有什么建议吗?

我建议您这样实现行函数:

Array.prototype.row = function(whichrow, newvalue) {
    if( newvalue !== undefined ) {
        this[whichrow] = newvalue;
    }
    return this[whichrow];
}
a.row(0, [0,0]);
然后像这样使用它:

Array.prototype.row = function(whichrow, newvalue) {
    if( newvalue !== undefined ) {
        this[whichrow] = newvalue;
    }
    return this[whichrow];
}
a.row(0, [0,0]);
和检索:

a.row(0)

为什么不简单地使用
a[0]=[0,0]