Javascript在多维数组中改变值

Javascript在多维数组中改变值,javascript,arrays,json,multidimensional-array,Javascript,Arrays,Json,Multidimensional Array,我尝试用Json文件中的内容填充多维数组 问题是,我无法更新数组中的内容: if(j>i && hoursYy == hoursY && secondsX == secondsXx){ wocheArray[i].count = wocheArray[i].count + 1; } 我的目标是,每次我在JSON文件中发现一个重复项时,“计数”就会增加。我在网上找不到答案 以防万一,以下是全部代码: var myweek; var x; var y; v

我尝试用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);
}
var-myweek;
var x;
变量y;
变量id;
var计数;
var wocheArray=[];
函数预加载(){
myweek=loadJSON(“data/data.json”);
}
函数设置(){
createCanvas(窗口宽度、窗口高度);
背景(0);
//保存在WOCHEARRAY中
对于(变量i=0;ii&&hoursYy==hoursY&&secondsX==secondsXx){
wocheArray[i]。计数=wocheArray[i]。计数+1;
}
否则{
x=myweek.woche[i].stunden;
y=myweek.woche[i].sekunden;
id=myweek.woche[i].person;
计数=0;
}
wocheArray[i]={x,y,count,id};
}
}
log(wocheArray);
}

如果您的代码格式稍微好一点,您将看到

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

在您的
之外,如果有其他
。因此,wocheArray[i]在每个循环结束时都会被覆盖。

问题在于:

wocheArray[i] = {x, y, count, id};
如果你检查你的代码,你会发现这个部分被覆盖了

考虑你的情况:如果发现重复的

然后,for循环将执行以下操作:-

1.)设置
var计数=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}之外调用它

您必须在else块内调用它才能使其正常工作

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

然而,我很好奇如何使用
count=0在else块内部,因为它在这里什么也不做,并且
var count=0在for块中,它只是重新初始化count变量,这是在浪费内存或不是一个好的做法。根据显示的代码示例。

这个问题将更容易用
data.json
中的一些示例来回答,也可以用
map
函数的代码来回答。可能wocheArray[i][count]data.json看起来是这样的:
{“woche”:[{“stunden”:0,“sekunden”:6,“person”:“b”},…
我想这很容易,因为我对javascript比较陌生。我删除了
map
-元素。但是我用
console.log
检查了它。除了
计数部分之外,数组wocheArray[]非常完美。