Javascript在多维数组中更改值

时间:2017-07-21 16:27:29

标签: javascript arrays json multidimensional-array

我尝试使用Json文件中的内容填充多维数组。

问题是,我无法更新数组中的内容:

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

我的目标是,每次在我的JSON文件中找到重复内容时,“count”都会计数。我无法在网上找到答案。

以防万一,这是整个代码:

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);
}

2 个答案:

答案 0 :(得分:0)

如果您更好地格式化代码,您将看到

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

if else之外。所以wocheArray [i]在每个循环结束时被覆盖。

答案 1 :(得分:0)

问题在于:

function validateform() {
var textarea = $('#myval').val();
var result = "no"; 

$("#test-ul li").each( function()                  
                           {
console.log($(this).text());

if ($(this).text() == textarea)
  {
   result = "yes";
  }

}
                           );
 console.log(result);
 if (result == "yes")
{
  $('#valid').text( "Correct!");
}
else
{

  $('#valid').text("Incorrect!");
}


}


$(document).ready(function()
             {

 $("#validate").click(function(){validateform();});
}
) ;
`

如果你检查你的代码,你会发现这部分是最重要的。

考虑你的情况:如果找到重复。

然后你的for循环会做什么: -

1。)设置wocheArray[i] = {x, y, count, id};

2。)[跳至如果条件,检查程序在哪里]

var count = 0;

3)在else块中,它将再次设置//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. }

4)您再次尝试设置count = 0; //的值,现在将wocheArray [1]计数设置为0.

因此,从这里,您可以看到您正在更新值或覆盖它们,从而产生不良结果。

您不应在wocheArray[1] = {x, y, count, id};

之外拨打此电话

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

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

但是,我很好奇在其他块中使用else{ x = .... .... .... count = 0; wocheArray[i] = {x, y, count, id}; } ,因为它在这里什么也没做,而{block}里面的count = 0;只是重新初始化计数变量,这会浪费内存或不好实践。根据显示的代码示例。