JS

2017-12-01 12 views
3

でjsons値を取得し、私はthis JSONの「APPID」を取得したいが、問題は、私は「APPID」があることによって選択されたJSコードを必要とする時間の間、オブジェクトのタイトルの変更ということですリスト内の最初(2番目、3番目)のオブジェクト私はこれを試してみましたが、それは動作しません:(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

この 'Object.values(JSON).MAPを試し(({APPID})=> APPID)' –

+0

通常、あなたが持っているものは理にかなっています...何がうまくいかないのですか?期待される振る舞いと現在の振る舞いを含める... – Salketer

+0

セクションは異なる順序で表示されます。たとえば、最初の変数(_578080_)に表示される数値は90番目の変数(_475150_が表示されるはずです)に表示されます。一番下の変数は1つしか表示されていないが、100個の変数(JSONの各セクションに1つ)があると考えてください。 – Markel

答えて

0

私はあなたが 探しているものを理解していないしかし、おそらくこのことができます:?

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

プログラムをクラッシュします。 – Markel

+0

'index.push(x)'は、オブジェクトではなくインデックス配列にループのインデックスを送ります。セクションはオブジェクトではありません。 – Craicerjack

0

使用Object.values()がに対応する値にアクセスしますその後、キーとappid値を取得するためにarray#mapを使用しています。

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

それぞれ異なる変数で表示することができます。例: x = 570 y = 730 z = 578080 – Markel

+0

これは配列を返します。要件に応じて異なる変数を割り当てることができます。 –

-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

私が理解から、あなたが直面している問題は、要素の順序である...あなたはナンバーワンは、インデックス1になり、ゲームをランク付けしたいと思いますか?

オブジェクトをJSONに解析するとき、プロパティの順序はまったく意味がありません。 JSONツールを使用して、正しい順序で確実に取得することはできません。理論的には、オブジェクトを作成してfor..inループに渡すだけで、時々異なる結果が生じる可能性があります。

それは順序を持っていませんが、それはまだあなたのindexマップ内のインデックスとしてscore_rank使用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); 

をそれを把握するための方法を含んでいるあなたが必要なものを取得します。

0

ここにオブジェクトがあります。リスト/配列ではありませんので、順序は保証されません。このフォーマットを使用して計画していることを実行する方法はありません。

注文が必要な場合は、jsonを配列にする必要があります。

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

このような何か試してください:あなたのデータから基づき

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

を、あなたのプロパティ名は、オブジェクト値を持つ数字です。したがって、すべてのプロパティを反復し、obj [propertyname]構文を使用して値のappidプロパティにアクセスするだけで済みます。

私はあなたが必要としていることを理解しています。

+0

のプロパティはappidsです。したがって、data [property] .appidは冗長です – Salketer

+0

上記のコードはappidsの配列です。 [1,2,3]。試してみる。 –

0

オブジェクトのプロパティを反復処理しているので、プロパティの順序はあまり予測できません(この場合は、メインプロパティの文字列の数値に従うように見えます)ので、依存することはできません。

しかし、目的に合っている場合は、選択したプロパティで結果を並べ替えることができます。この場合 、Iは "score_rank" プロパティによって結果を並べ替える:

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