簡體   English   中英

JavaScript更改多維數組中的值

[英]Javascript changing value in multidimensional array

我嘗試用Json文件中的內容填充多維數組。

問題是,我無法更新數組中的內容:

if(j>i && hoursYy == hoursY && secondsX == secondsXx){
  wocheArray[i].count = wocheArray[i].count + 1;
}

我的目標是,每次我在JSON文件中發現重復項時,“計數”就增加。 我在網上找不到答案。

以防萬一,這是完整的代碼:

var myweek;
var x;
var y;
var id;
var count;
var wocheArray = [];

function preload(){
myweek = loadJSON("data/data.json");
}

function setup(){
createCanvas(windowWidth, windowHeight);
background(0);

//SAVE IN WOCHEARRAY
for (var i = 0; i < myweek.woche.length; i++) {

hoursY = myweek.woche[i].stunden;
secondsX = myweek.woche[i].sekunden;

for (var j=0; j< myweek.woche.length; j++){
 hoursYy = myweek.woche[j].stunden;
 secondsXx = myweek.woche[j].sekunden;

if(j>i && hoursYy == hoursY && secondsX == secondsXx){
  wocheArray[i].count = wocheArray[i].count + 1;
}

else {
  x = myweek.woche[i].stunden;
  y = myweek.woche[i].sekunden;
  id = myweek.woche[i].person;
  count = 0;
  }
wocheArray[i] = {x, y, count, id};
}
}
console.log(wocheArray);
}

如果您更好地格式化代碼,將會看到

wocheArray[i] = {x, y, count, id};

if else不在你之外。 因此,wocheArray [i]在每個循環結束時都會被覆蓋。

問題在這里:

wocheArray[i] = {x, y, count, id};

如果檢查代碼,您會發現此部分已被覆蓋。

考慮您的情況:如果找到重復項。

然后,您的for循環將執行以下操作:

1.)設置var count = 0;

2.)[跳至If條件,檢查程序在哪里]

//IF match found (at j = 2 location, and i = 1)
//then what happen is : 

if(2>1 && hoursYy == hoursY && secondsX == secondsXx){
   wocheArray[1].count = wocheArray[1].count + 1;
// from here the count of wocheArray[1] would be increased by 1, Suppose 1.
}

3)在else塊中,它將再次設置count = 0;

4)再次嘗試設置wocheArray[1] = {x, y, count, id}; //現在wocheArray [1]的計數設置為0。

因此,從這里可以看到您正在更新值或覆蓋它們,從而創建了不良結果。

您不應在wocheArray[i] = {x, y, count, id};之外調用它wocheArray[i] = {x, y, count, id};

您必須在else塊中調用它以使其正常工作。

else{
x = ....
....
....
count = 0;
wocheArray[i] = {x, y, count, id};
}

但是,我對count = 0;的使用感到好奇count = 0; 在else塊中,因為它在這里什么也不做,並且var count =0; 在for塊中,它只是重新初始化count變量,這浪費了內存或不是一個好習慣。 根據顯示的代碼示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM