2011-10-14 23 views
0

我想擴展Array.prototype以包含一個方法來從2x2矩陣(JavaScript行話中的列表列表)中選擇一行或一列。該方法應該通過引用返回選定的數組元素,因此結果可用於動態更改數組中的某些值。在JavaScript中,如何通過引用從方法返回數組的一部分?

切片()陣列的方法不引用返回

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 

任何人有任何建議嗎?

+3

爲什麼不直接使用' a [0] = [0,0];'? – cambraca

回答

1

我建議你實現你行的功能是這樣的:

Array.prototype.row = function(whichrow, newvalue) { 
    if(newvalue !== undefined) { 
     this[whichrow] = newvalue; 
    } 
    return this[whichrow]; 
} 

,並使用它像這樣:

a.row(0, [0,0]); 

和檢索:

a.row(0) 
相關問題