2017-12-01 7 views
3

Ich möchte die „appid“ von this json zu bekommen, aber das Problem ist, dass die Objekte Titeländerung während der Zeit, so brauche ich einen js Code, wo die „appid“ indem sie ausgewählt ist das erste (zweite, dritte) Objekt in der Liste. Ich habe versucht, diese aber es funktioniert nicht :(Get jsons Wert mit js

var sections = (call the json) 

var index = []; 

//setting the index array 
for (var x in sections) { 
    index.push(x); 
} 

var imgid001 = (sections[index[1]].appid); 
+0

Versuchen Sie, diese 'Object.values ​​(json) .map (({appid}) => appid)' –

+0

normalerweise, was du hast, macht Sinn ... Bitte, was funktioniert nicht? Fügen Sie erwartetes Verhalten und aktuelles Verhalten hinzu ... – Salketer

+0

Das Problem besteht darin, dass die Abschnitte in anderer Reihenfolge angezeigt werden, z. B. die Nummer, die in der ersten Variablen (_578080_) erscheinen sollte, in der 90. Variablen (wo _475150_ angezeigt werden soll). Denke, dass ich unten nur eine Variable anzeigen kann, aber es gibt 100 Variablen (eine für jede Sektion im JSON) – Markel

Antwort

0

Ich verstehe nicht, was Sie für suchen Aber vielleicht hilft:

var sections = (al the json code in local)  
var index = [];  
//setting the index array 
for (var x = 0 ; x < sections.lenght; x ++){ 
    index.push(x) 
}  
var imgid001 = (sections[index[90]].appid); 
+0

stürzt das Programm ab – Markel

+0

'index.push (x)' drückt den Index der Schleife, eine Zahl, in das Index-Array, nicht das Objekt und die Abschnitte ist ein Objekt, kein Array – Craicerjack

0

Verwenden Object.values(), um die Werte zugreifen entsprechend ein Schlüssel und array#map dann verwenden, erhalten den Wert appid.

var json = {"578080":{"appid":578080,"name":"PLAYERUNKNOWN'S BATTLEGROUNDS","developer":"PUBG Corporation","publisher":"PUBG Corporation","score_rank":17,"positive":277104,"negative":173247,"userscore":60,"owners":22512885,"owners_variance":142499,"players_forever":22385548,"players_forever_variance":142115,"players_2weeks":16894492,"players_2weeks_variance":124193,"average_forever":8570,"average_2weeks":1771,"median_forever":5509,"median_2weeks":1266,"price":"2999"},"730":{"appid":730,"name":"Counter-Strike: Global Offensive","developer":"Valve","publisher":"Valve","score_rank":74,"positive":2094164,"negative":228950,"userscore":89,"owners":37137816,"owners_variance":180096,"players_forever":35672331,"players_forever_variance":176797,"players_2weeks":9605392,"players_2weeks_variance":94373,"average_forever":17518,"average_2weeks":714,"median_forever":4280,"median_2weeks":282,"price":"1499"},"570":{"appid":570,"name":"Dota 2","developer":"Valve","publisher":"Valve","score_rank":64,"positive":742208,"negative":101331,"userscore":87,"owners":117932840,"owners_variance":290445,"players_forever":117932840,"players_forever_variance":290445,"players_2weeks":9220909,"players_2weeks_variance":92502,"average_forever":11673,"average_2weeks":1144,"median_forever":258,"median_2weeks":640,"price":"0"}}; 
 

 
var result = Object.values(json).map(function(obj){ 
 
     return obj.appid; 
 
    }); 
 
console.log(result);

+0

Kann jedes in verschiedenen Variablen angezeigt werden, Beispiel: x = 570 y = 730 z = 578080 – Markel

+0

Es wird ein Array zurückgegeben, Sie können verschiedene Variablen basierend auf Ihrer Anforderung zuweisen. –

-2

var sections = {a:9, b:8, c:7}; 
 

 
var index = []; 
 

 
//setting the index array 
 
for (var i in sections) { // sections['a','b','c'] 
 
    index.push(i); 
 
} 
 

 
alert(index[1]) // 'b' 
 
alert(sections[index[1]]); // 8 
 

 
// var sections = {a:9, b:{appid:5}, c:7}; 
 
// alert(sections[index[1]]); // firefox: {} or nothing (maybe) 
 
// alert(sections[index[1]].toSource()); // firefox: {appid:5} 
 
// alert(sections[index[1]].appid); // 5

0

Von dem, was ich verstehe, ist das Problem Sie konfrontiert sind mit der Anordnung der Elemente ist ... Sie würden bei Index 1 das Spiel Nummer eins sein?

Beim Parsen eines Objekts zu JSON hat die Reihenfolge der Eigenschaften absolut keine Bedeutung. Sie können sich nicht auf ein JSON-Tool verlassen, um sicherzustellen, dass Sie es auch in der richtigen Reihenfolge erhalten. Theoretisch kann das Erstellen eines Objekts und das Weiterleiten durch eine for..in-Schleife möglicherweise von Zeit zu Zeit zu unterschiedlichen Ergebnissen führen.

Während es keine Ordnung hat, enthält es noch einen Weg, es herauszufinden, die score_rank

var sections = (call the json) 

var index = []; 

//setting the index array 
for (var x in sections) { 
    index[sections[x].score_rank] = x; 
} 

var imgid001 = (sections[index[1]].appid); 

Mit score_rank als Index in Ihrer index Karte erhalten Sie, was Sie brauchen.

0

Sie haben hier ein Objekt, keine Liste/Array, daher ist die Reihenfolge nicht garantiert! Es gibt keine Möglichkeit zu tun, was Sie planen, dieses Format zu verwenden.

Wenn Sie eine Bestellung benötigen, benötigen Sie den JSON als Array.

var sections = {"578080":{"appid":578080,"name":"PLAYERUNKNOWN'S BATTLEGROUNDS","developer":"PUBG Corporation","publisher":"PUBG Corporation","score_rank":17,"positive":277104,"negative":173247,"userscore":60,"owners":22512885,"owners_variance":142499,"players_forever":22385548,"players_forever_variance":142115,"players_2weeks":16894492,"players_2weeks_variance":124193,"average_forever":8570,"average_2weeks":1771,"median_forever":5509,"median_2weeks":1266,"price":"2999"}, 
 
\t \t "730":{"appid":730,"name":"Counter-Strike: Global Offensive","developer":"Valve","publisher":"Valve","score_rank":74,"positive":2094164,"negative":228950,"userscore":89,"owners":37137816,"owners_variance":180096,"players_forever":35672331,"players_forever_variance":176797,"players_2weeks":9605392,"players_2weeks_variance":94373,"average_forever":17518,"average_2weeks":714,"median_forever":4280,"median_2weeks":282,"price":"1499"}, 
 
\t \t "570":{"appid":570,"name":"Dota 2","developer":"Valve","publisher":"Valve","score_rank":64,"positive":742208,"negative":101331,"userscore":87,"owners":117932840,"owners_variance":290445,"players_forever":117932840,"players_forever_variance":290445,"players_2weeks":9220909,"players_2weeks_variance":92502,"average_forever":11673,"average_2weeks":1144,"median_forever":258,"median_2weeks":640,"price":"0"}, 
 
\t \t "440":{"appid":440,"name":"Team Fortress 2","developer":"Valve","publisher":"Valve","score_rank":85,"positive":456688,"negative":29364,"userscore":93,"owners":43830288,"owners_variance":194180,"players_forever":43830288,"players_forever_variance":194180,"players_2weeks":1690982,"players_2weeks_variance":39926,"average_forever":4490,"average_2weeks":655,"median_forever":226,"median_2weeks":381,"price":"0"}, 
 
\t \t "271590":{"appid":271590,"name":"Grand Theft Auto V","developer":"Rockstar North","publisher":"Rockstar Games","score_rank":24,"positive":234736,"negative":112774,"userscore":67,"owners":8775849,"owners_variance":90285,"players_forever":8583731,"players_forever_variance":89309,"players_2weeks":1667493,"players_2weeks_variance":39648,"average_forever":7619,"average_2weeks":491,"median_forever":4032,"median_2weeks":160,"price":"5999"}}; 
 

 

 
var sectionsArray= [{"appid":578080,"name":"PLAYERUNKNOWN'S BATTLEGROUNDS","developer":"PUBG Corporation","publisher":"PUBG Corporation","score_rank":17,"positive":277104,"negative":173247,"userscore":60,"owners":22512885,"owners_variance":142499,"players_forever":22385548,"players_forever_variance":142115,"players_2weeks":16894492,"players_2weeks_variance":124193,"average_forever":8570,"average_2weeks":1771,"median_forever":5509,"median_2weeks":1266,"price":"2999"}, 
 
\t \t {"appid":730,"name":"Counter-Strike: Global Offensive","developer":"Valve","publisher":"Valve","score_rank":74,"positive":2094164,"negative":228950,"userscore":89,"owners":37137816,"owners_variance":180096,"players_forever":35672331,"players_forever_variance":176797,"players_2weeks":9605392,"players_2weeks_variance":94373,"average_forever":17518,"average_2weeks":714,"median_forever":4280,"median_2weeks":282,"price":"1499"}, 
 
\t \t {"appid":570,"name":"Dota 2","developer":"Valve","publisher":"Valve","score_rank":64,"positive":742208,"negative":101331,"userscore":87,"owners":117932840,"owners_variance":290445,"players_forever":117932840,"players_forever_variance":290445,"players_2weeks":9220909,"players_2weeks_variance":92502,"average_forever":11673,"average_2weeks":1144,"median_forever":258,"median_2weeks":640,"price":"0"}, 
 
\t \t {"appid":440,"name":"Team Fortress 2","developer":"Valve","publisher":"Valve","score_rank":85,"positive":456688,"negative":29364,"userscore":93,"owners":43830288,"owners_variance":194180,"players_forever":43830288,"players_forever_variance":194180,"players_2weeks":1690982,"players_2weeks_variance":39926,"average_forever":4490,"average_2weeks":655,"median_forever":226,"median_2weeks":381,"price":"0"}, 
 
\t \t {"appid":271590,"name":"Grand Theft Auto V","developer":"Rockstar North","publisher":"Rockstar Games","score_rank":24,"positive":234736,"negative":112774,"userscore":67,"owners":8775849,"owners_variance":90285,"players_forever":8583731,"players_forever_variance":89309,"players_2weeks":1667493,"players_2weeks_variance":39648,"average_forever":7619,"average_2weeks":491,"median_forever":4032,"median_2weeks":160,"price":"5999"}]; 
 
    
 
    
 

 

 
for (var x in sections) { 
 
    console.info("this will not be the first elements appid in json:", x); 
 
    break; 
 
} 
 

 
console.info("Object keys/order", Object.keys(sections)); 
 

 
console.info("first element in array", sectionsArray[0].appid);

0

so etwas wie dieses Versuchen:

\t var data = {"100":{appid:1, name:'1'}, "200":{appid:2, name:'2'}, "300":{appid:3, name:'3'}}; 
 

 
\t var appIds = []; 
 
\t for (var property in data){ 
 
\t appIds.push(data[property].appid); 
 
\t } 
 

 
\t console.log(appIds);

Basierend auf Ihre Daten sind Ihre Eigenschaftsnamen Zahlen mit einem Objektwert. Daher müssen wir nur zu allen Eigenschaften iterieren und auf die appid-Eigenschaft des Werts zugreifen, indem wir die obj [propertyname] -Syntax verwenden.

Ich hoffe, ich habe verstanden, was Sie brauchen.

+0

Eigenschaften sind appids ... So Daten [Eigenschaft] .appid ist redundent – Salketer

+0

der Code oben Ergebnisse ist ein Array von Anwendungen z. [1,2,3]. Versuche es. –

0

Da Sie zu den Eigenschaften eines Objekts iterieren, ist die Reihenfolge der Eigenschaften nicht so vorhersehbar (in diesem Fall scheint es dem numerischen Wert der Haupteigenschaftszeichenfolge zu folgen), sodass Sie sich nicht darauf verlassen können.

Aber, wenn es für Ihr Ziel nützlich ist, können Sie Ihr Ergebnis nach einer Eigenschaft sortieren, die Sie auswählen. In diesem Fall habe ich das Ergebnis durch die "score_rank" Eigenschaft sortieren:

var sections = { 
 
    "2":{"appid":"appidN1-scorerank5","name":"PLAYERUNKNOWN'S BATTLEGROUNDS","developer":"PUBG Corporation","publisher":"PUBG Corporation","score_rank":5,"positive":277104,"negative":173247,"userscore":60,"owners":22512885,"owners_variance":142499,"players_forever":22385548,"players_forever_variance":142115,"players_2weeks":16894492,"players_2weeks_variance":124193,"average_forever":8570,"average_2weeks":1771,"median_forever":5509,"median_2weeks":1266,"price":"2999"}, 
 
    "3":{"appid":"appidN2-scorerank2","name":"Counter-Strike: Global Offensive","developer":"Valve","publisher":"Valve","score_rank":2,"positive":2094164,"negative":228950,"userscore":89,"owners":37137816,"owners_variance":180096,"players_forever":35672331,"players_forever_variance":176797,"players_2weeks":9605392,"players_2weeks_variance":94373,"average_forever":17518,"average_2weeks":714,"median_forever":4280,"median_2weeks":282,"price":"1499"}, 
 
    "4":{"appid":"appidN3-scorerank3","name":"Dota 2","developer":"Valve","publisher":"Valve","score_rank":3,"positive":742208,"negative":101331,"userscore":87,"owners":117932840,"owners_variance":290445,"players_forever":117932840,"players_forever_variance":290445,"players_2weeks":9220909,"players_2weeks_variance":92502,"average_forever":11673,"average_2weeks":1144,"median_forever":258,"median_2weeks":640,"price":"0"}, 
 
    "1":{"appid":"appidN4-scorerank4","name":"PLAYERUNKNOWN'S BATTLEGROUNDS","developer":"PUBG Corporation","publisher":"PUBG Corporation","score_rank":4,"positive":277104,"negative":173247,"userscore":60,"owners":22512885,"owners_variance":142499,"players_forever":22385548,"players_forever_variance":142115,"players_2weeks":16894492,"players_2weeks_variance":124193,"average_forever":8570,"average_2weeks":1771,"median_forever":5509,"median_2weeks":1266,"price":"2999"}, 
 
    "6":{"appid":"appidN5-scorerank1","name":"Counter-Strike: Global Offensive","developer":"Valve","publisher":"Valve","score_rank":1,"positive":2094164,"negative":228950,"userscore":89,"owners":37137816,"owners_variance":180096,"players_forever":35672331,"players_forever_variance":176797,"players_2weeks":9605392,"players_2weeks_variance":94373,"average_forever":17518,"average_2weeks":714,"median_forever":4280,"median_2weeks":282,"price":"1499"}, 
 
    "5":{"appid":"appidN6-scorerank0","name":"Dota 2","developer":"Valve","publisher":"Valve","score_rank":0,"positive":742208,"negative":101331,"userscore":87,"owners":117932840,"owners_variance":290445,"players_forever":117932840,"players_forever_variance":290445,"players_2weeks":9220909,"players_2weeks_variance":92502,"average_forever":11673,"average_2weeks":1144,"median_forever":258,"median_2weeks":640,"price":"0"} 
 
    
 
    } 
 
    
 
    var result = Object.values(sections) 
 
    .sort(function(a, b) { 
 
     return a.score_rank - b.score_rank; 
 
    }) 
 
    .map(function(obj){ 
 
      
 
      return obj.appid; 
 
     }); 
 
    
 
    console.log(result);