[英]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.