0
votes

Boucle à travers le tableau et les éléments associés

J'ai les données JSON suivantes:

  success: function (d) {
            var parsedData = $.parseJSON(d);                
            var objCount = Object.keys(parsedData).length;
            $.each(parsedData, function (key, value) {
                console.log[value.LoggerId, new Date(value.ReadingDate), Number(value.ReadingValue), value.ToolTip]
            }); 
   },

Je veux pouvoir parcourir chaque tableau et tous ses éléments.

Jusqu'à présent, je ne peux que boucler via le tableau principal et non son contenu.

0:[{"LoggerId":"1000651443","ReadingDate":"2018-12-05 00:03:03, "ReadingValue":"12.6", "Tooltip":"Someinfo"},
{"LoggerId":"1000651447","ReadingDate":"2018-12-05 00:04:03, "ReadingValue":"12.7", "Tooltip":"Someinfo"}]

1:[{"LoggerId":"1000651444","ReadingDate":"2018-12-05 00:03:05, "ReadingValue":"12.9", "Tooltip":"Someinfo"},
 {"LoggerId":"1000651445","ReadingDate":"2018-12-05 00:03:07, "ReadingValue":"14.9", "Tooltip":"Someinfo"}]

2:[{"LoggerId":"1000651446","ReadingDate":"2018-12-05 00:03:17, "ReadingValue":"13.6", "Tooltip":"Someinfo"},
 {"LoggerId":"1000651446","ReadingDate":"2018-12-05 00:04:17, "ReadingValue":"43.6", "Tooltip":"Someinfo"}]

J'ai essayé des boucles imbriquées, mais j'obtiens un objet non défini comme une erreur.

Je veux faire une boucle à 0 et à tous ses éléments et attribuez-les, puis 1, puis 2 et ainsi de suite ...

TIA


4 commentaires

vous avez une erreur avec votre syntaxe json


"ReadingDate": "2018-12-05 00:03:05 Il n'y a pas de guillemet de clôture


Désolé, c'était une faute de frappe de ma part.


corrige le JSON et console.log (- pas console.log [- Cela me semble correct


3 Réponses :


1
votes

Si vous recevez une réponse de tableau json , vous pouvez parcourir chaque méthode dans jQuery

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="res"></div>
$.get("https://jsonstorage.net/api/items/344a6593-6ee4-45b2-a85c-227f76e32880", function(data, status){
    $.each(data, function(i, item) {
        console.log(item.LoggerId);
        $("#res").append(item.LoggerId + "<br>");
    });
}); 

Si vous avez un tas de données dans votre fichier json , essayez la méthode get

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="res"></div>
var data = [
	[{
		"LoggerId": "1000651443",
		"ReadingDate": "2018-12-05 00:03:03",
		"ReadingValue": "12.6",
		"Tooltip": "Someinfo"
	}],
	[{
		"LoggerId": "1000651444",
		"ReadingDate": "2018-12-05 00:03:05",
		"ReadingValue": "12.9",
		"Tooltip": "Someinfo"
	}],
	[{
		"LoggerId": "1000651446",
		"ReadingDate": "2018-12-05 00:03:17",
		"ReadingValue": "13.6",
		"Tooltip": "Someinfo"
	}]
];

$.each(data, function(i, item) {
    console.log(item[0].LoggerId);
    $("#res").append(item[0].LoggerId + "<br>");
});


9 commentaires

J'ai ajouté à la question, mais il y a beaucoup de lignes dans chaque tableau (environ 8500) ... Je dois donc parcourir chaque tableau puis les éléments à l'intérieur.


Vous pouvez montrer votre sortie JSON exacte alors je peux suggérer le chemin


Vous pourriez regretter de me demander que, vous allez ici, jsfiddle.net/xth35sy


Comment cela fonctionne-t-il, c'est que j'ai dans cet exemple 10 appareils pour lesquels je récupère des données et qu'il s'agit de données en sortie dans Json. Je dois ensuite les ajouter à un graphique en tant que séries séparées, d'où le bouclage.


Cela ne me permettra d'ajouter qu'environ trois lots de données dans Fiddle


Qu'entendez-vous par méthode get


en utilisant la méthode GET, vous pouvez récupérer des objets de fichier json


Je pense que je vais fermer cela car je suis presque sûr que j'ai besoin d'une boucle imbriquée, une pour les tableaux et pour les éléments à l'intérieur.


$ .get (" jsonstorage.net/api/items/344a6593-6ee4 -45b2-a85c-227‌ f76e32880 ", function (data, status) {$ .each (data, function (i, item) {console.log (item.LoggerId); $ (" # res ") .append (item.LoggerId + "
");});});



1
votes

Votre problème principal est dans cette ligne:

var arr = [[1,2,3], [4,5,6], [7,8,9]];

for(var i=0; i< arr.length; i++) {
    console.log('sub array N. ' + i);
    for(var j=0; j<arr[i].length; j++) {
        console.log('element n. ' + j + ': ' + arr[i][j]);
    }
}


5 commentaires

Ce que j'obtiens pour le moment est (4) [undefined, Invalid Date, NaN, undefined]. Je suppose que c'est parce que j'ai besoin de parcourir les éléments du tableau (0,1,2 etc.) et d'imbriquer une boucle pour obtenir les éléments


Chaque tableau [{a, b, c, d}] est unique à un appareil, donc 0: [{a, b, c, d}] et 1: [{a, b, c, d}] sont deux différents ensembles de données. J'ai donc besoin de parcourir les index ([0], [1], [2], [3] etc) puis les éléments à l'intérieur {a, b, c, d}.


Exactement ce que fait l'extrait


J'ai remarqué dans mon JSON, que les tableaux sont complètement séparés (pas de virgule). Donc, je boucle à travers les tableaux avec succès, mais je ne peux pas le faire boucler à travers les clés / valeurs car il voit le tableau comme une chaîne géante. J'ai donc essayé $ .each (parsedData, function (key, value) {$ .each (value, function (i, item) {console.log (item.LoggerId);});});


De plus, cela n'écrira pas le loggerId ou toute autre paire clé / valeur.



0
votes

Ce qui suit a fonctionné pour moi:

            success: function (d) {               
                var parsedData = $.parseJSON(d);
                $.each(parsedData, function (key, value) {  
                    var result = $.parseJSON(value);  
                    $.each(result, function (k, v) {
                        //display the key and value pair
                        console.log([new Date(v.ReadingDate), Number(v.ReadingValue)]);
                    });

                });   
            },

J'ai pu parcourir les tableaux, puis le contenu des clés. Une fois que j'ai analysé les données JSON des tableaux individuels, cela a semblé fonctionner.


0 commentaires