2016-03-08 50 views
0

我需要設置這個數組中每個項目的值,向上計數。更改數組中每個項目的屬性?

因此,例如,路徑[0] .value的= 1,路徑[1]。價值= 2等等

編輯:我在尋找最有效的方式來做到這一點。

我認爲for循環是最好的方法,但我想學習其他方法。它可以通過map()方法或forEach()完成嗎?關於...的聲明怎麼樣?我想用純JS完成它,但如果你能用jQuery教我一個更好的方法,我也有興趣瞭解它。

在此先感謝。

function Cell(x,y){ 
 
    this.xCoordinate = x; 
 
    this.yCoordinate = y; 
 
    this.value; 
 
} 
 
var path = [new Cell(0,0), new Cell(0,1), new Cell(0,2)];

+0

爲什麼不直接使用一個簡單的正'for'環 - >'爲(VAR I = 0;我<100;我++){路徑。 push(new Cell(0,i))};' – adeneo

+0

'forEach'僅僅是'for'循環中的一種糖。你可以使用任何其他數組方法('map','filter'等),但是你不會正確使用它們。 –

+0

我正在尋找最有效的方法。這是一個for循環? – fatblacklip

回答

0

如果您有現成的數組,你可以使用地圖。

var path = [0,1,2].map(x => new Cell(0, x)) 

或變異

path = path.map(x => { 
    x.value = x.yCoordinate - 1 
    return x 
}) 
+0

第二種是隻是濫用'地圖'雖然。它可能是'forEach'或'filter'。 –

+0

我不同意,它是如何濫用地圖?我們從一套開始,然後將其轉換爲一套新套件。那是什麼地圖。 – Fresheyeball

+0

在您編輯之前,您專門使用map來迭代一組。你最近的編輯實際上將它變成一個數字數組。 –

0

一個簡單的for循環應該工作:

var path = [], 
    len = 10; 

for (
    var idx = 0; 
    idx < len; 
    path.push(new Cell(0,++idx)) 
) 
0
<html> 
<body> 
<p id="demo"></p> 
<script> 
function Cell(x,y){ 
    this.xCoordinate = x; 
    this.yCoordinate = y; 
    this.value; 
} 
function setValues(element, index, array){ 
array[index].value = index+1; 
} 
var path = [new Cell(0,0), new Cell(0,1), new Cell(0,2)]; 
path.forEach(setValues); 
document.getElementById("demo").innerHTML = path[2].value; 
</script> 
</body> 
</html> 
+0

這更多地屬於顯示。我的腳本依賴於每個單元格的值。 – fatblacklip

+0

你是對的。根據你的問題,我公開了一個使用forEach的例子。 –