Правильный способ итерации по двумерному JSON - PullRequest
0 голосов
/ 07 мая 2018

У меня есть двухмерный JSON, который выглядит следующим образом:

[[{"ID":1,"Name":"....","Ct":123, "Time":"2018-05-07T00:00:00"},
{"ID":2,"Name":"....","Ct":123, "Time":"2018-05-07T00:01:00"}],
[{"ID":3,"Name":"....","Ct":123, "Time":"2018-05-07T00:02:00"},
{"ID":4,"Name":"....","Ct":123, "Time":"2018-05-07T00:03:00"}]]

Сериализуется из объекта C #. В любом случае я пытаюсь перебрать этот json как:

for (var key in data) // first loop
{
  var item = data[key];
  for (var key2 in item) // second loop
  {
    // some code...
  }
}

Где первый цикл должен повторяться два раза: во время первой итерации второй цикл должен повторяться над двумя объектами с идентификаторами 1 и 2; и во время второй итерации по объектам с идентификаторами 3 и 4.

Полагаю, проблема в том, что в первом цикле нет ключа, поскольку первый цикл повторяется только один раз, а во втором - объекты с идентификаторами 1,2,3,4.

Как я могу повторить это как двумерную вкладку?

[EDIT]

Я сделал ошибку во время итерации во втором цикле, и похоже, что он не повторяется. Решение выше является правильным.

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

var data = [
	[{
			"ID": 1,
			"Name": "....",
			"Ct": 123,
			"Time": "2018-05-07T00:00:00"
		},
		{
			"ID": 2,
			"Name": "....",
			"Ct": 123,
			"Time": "2018-05-07T00:01:00"
		}
	],
	[{
			"ID": 3,
			"Name": "....",
			"Ct": 123,
			"Time": "2018-05-07T00:02:00"
		},
		{
			"ID": 4,
			"Name": "....",
			"Ct": 123,
			"Time": "2018-05-07T00:03:00"
		}
	]
];

for (var key in data) // first loop
{
  var item = data[key];
  console.log('======== outter ========');
  for (var key2 in item) // second loop
  {
      console.log('======== inner ========');
      console.log(item[key2].ID);

  }
}
0 голосов
/ 07 мая 2018

Цикл For должен работать, но вы также можете использовать maps / forEach / for-of для перебора массивов:

var input = [
  [{"ID":1,"Name":"....","Ct":123, "Time":"2018-05-07T00:00:00"},
    {"ID":2,"Name":"....","Ct":123, "Time":"2018-05-07T00:01:00"}],
  [{"ID":3,"Name":"....","Ct":123, "Time":"2018-05-07T00:02:00"},
   {"ID":4,"Name":"....","Ct":123, "Time":"2018-05-07T00:03:00"}]
];

input.map(outElem => {
  console.log('======== outter ========');
  outElem.map(inElem => {
    console.log('======== inner ========');
    console.log(inElem.ID);
  });
});

// Output:
======== outter ========
======== inner ========
1
======== inner ========
2
======== outter ========
======== inner ========
3
======== inner ========
4

Или forEach:

input.forEach(outElem => {
  console.log('======== outter ========');
  outElem.forEach(inElem => {
    console.log('======== inner ========');
    console.log(inElem.ID);
  });
});

Или для of:

for (const outElem of input) {
  console.log('======== outter ========');
  for (const inElem of outElem) {
    console.log('======== inner ========');
    console.log(inElem.ID);
  }
}
...