我想获取this json的" appid" 但问题是对象标题在此期间发生了变化,所以我需要一个js代码通过成为列表中的第一个(第二个,第三个)对象来选择" appid" 。我尝试了这个,但它不起作用:(
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 :(得分: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);
答案 1 :(得分:0)
使用Object.values()
访问与密钥对应的值,然后使用array#map
获取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);
答案 2 :(得分:0)
根据我的理解,你面临的问题是元素的排序......你想要排名第一的游戏是否在索引1?
将对象解析为JSON时,属性的顺序绝对没有意义。您不能依赖任何JSON工具来确保您以正确的顺序获得它们。理论上,只是创建一个对象并通过for..in循环传递它可能会不时给出不同的结果。
虽然它没有订单,但它仍然包含一种方法来计算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);
使用score_rank作为index
地图中的索引,可以满足您的需求。
答案 3 :(得分: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"},
"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"},
"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"},
"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"},
{"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"},
{"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"},
{"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"},
{"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);
&#13;
答案 4 :(得分:0)
尝试这样的事情:
var data = {"100":{appid:1, name:'1'}, "200":{appid:2, name:'2'}, "300":{appid:3, name:'3'}};
var appIds = [];
for (var property in data){
appIds.push(data[property].appid);
}
console.log(appIds);
&#13;
根据您的数据,您的属性名称是具有对象值的数字。因此,我们只需要迭代到所有属性并使用obj [propertyname]语法访问值的appid属性。
希望我明白你的需要。
答案 5 :(得分:0)
由于您正在迭代到对象的属性,因此属性的顺序不是那么可预测的(在这种情况下,它似乎遵循主属性字符串的数值),因此您不能依赖它。
但是,如果它对您的目标有用,您可以按您选择的属性对结果进行排序。 在这种情况下,我按&#34; score_rank&#34;对结果进行排序。财产:
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);
&#13;
答案 6 :(得分:-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