Javascript在多维数组中改变值
我尝试用Json文件中的内容填充多维数组 问题是,我无法更新数组中的内容: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
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[]非常完美。