Javascript/JSON忽略未定义
我想知道如何忽略JSON中未定义的对象 我有两个json文件,第一个是'inventory.js',第二个是'prices.js',我已经用ajax连接了它们。现在,如果运行循环检查库存中的价格,则“inventory.js”中的对象在“prices.js”中不存在,因此我得到一个错误: 'Uncaught TypeError:无法读取未定义的'2016年服务奖章'属性' 我已尝试通过以下方法来预防:Javascript/JSON忽略未定义,javascript,html,json,Javascript,Html,Json,我想知道如何忽略JSON中未定义的对象 我有两个json文件,第一个是'inventory.js',第二个是'prices.js',我已经用ajax连接了它们。现在,如果运行循环检查库存中的价格,则“inventory.js”中的对象在“prices.js”中不存在,因此我得到一个错误: 'Uncaught TypeError:无法读取未定义的'2016年服务奖章'属性' 我已尝试通过以下方法来预防: if (prices.match(undefined)) { prices = 0 }
if (prices.match(undefined)) {
prices = 0
}
但它不起作用
以下是HTML代码:
$.ajax({
url: 'InventoryTemi1337_28_12_2020.json',
dataType: 'json',
type: 'get',
contentType: "text/html; charset=UTF-8",
cache: false,
success: function(data){
$(data.rgInventory).each(function(index, value, key){
for(const [key, value] of Object.entries(data.rgInventory)){
var id = value['classid'] + '_' + value['instanceid']
var name = data['rgDescriptions'][id]['market_hash_name']
var img = 'https://steamcommunity-a.akamaihd.net/economy/image/' + data['rgDescriptions'][id]['icon_url']
//--------------------------------
$.ajax({
url: 'prices.json',
dataType: 'json',
type: 'get',
contentType: "text/html; charset=UTF-8",
cache: false,
success: function(dataa){
$(dataa.prices).each(function(dataa){
var min = 0.1
var prices = dataa.prices[name][price]
var reject = 'junk'
if (prices.match(undefined)){
prices = min
}
// console.log(prices)
});
}
});
}
});
}
});
下面是两个JSON列表。第一个是库存,第二个是价格。它们现在不匹配,因为列表超过5000行
{
"more": false,
"more_start": false,
"rgCurrency": [],
"rgDescriptions": {
"1326246365_1395751354": {
"appid": "730",
"background_color": "",
"classid": "1326246365",
"commodity": 1,
"descriptions": [
{
"color": "99ccff",
"type": "html",
"value": "Dieser Gegenstand verfügt über StatTrak™-Technologie, der bestimmte Statistiken festhält, wenn er von ihrem Besitzer ausgerüstet wird."
},
{
"type": "html",
"value": " "
},
{
"color": "CF6A32",
"type": "html",
"value": "StatTrak™ Auszeichnungen als „Beste Spieler“ im offiziellen Wettkampf: 1016"
},
{
"color": "ff4040",
"type": "html",
"value": "*Statistiken dieses Gegenstands werden bei Handel oder Verkauf auf dem Communitymarkt zurückgesetzt"
},
{
"type": "html",
"value": " "
},
{
"type": "html",
"value": "Dieses Musikkit tauscht die Musik im Spiel aus und kann mit jedem Ihrer Mitspieler geteilt werden. Es enthält außerdem eine „Bester Spieler“-Hymne, die für jeden Spieler abgespielt wird, wenn Sie der beste Spieler sind.\n\nDas Musikkit ersetzt die folgende Musik:\n- Hauptmenü\n- Rundenstart und -ende\n- Kartenziele\n- Zehn-Sekunden-Warnung\n- Verfolgerkamera"
},
{
"type": "html",
"value": " "
},
{
"type": "html",
"value": "Spielekomponist Lennie Moore serviert einen aromatischen, würzigen Mix aus Jazzy Funk. Wird am besten kalt serviert, wie die Leichen Ihrer Gegner, nachdem Sie mit ihnen fertig sind."
},
{
"type": "html",
"value": " "
}
],
"icon_drag_url": "",
"icon_url": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXO9B9WLbU5oA9OA0DVSeqk0sLcXE9xGlQG-OLwLgFj1qCbczsX6I_mwNXZlq_xa-_UwmoEvcYm0uqY99ih3wPhr0ByIzekKuBc2Os",
"instanceid": "1395751354",
"market_hash_name": "StatTrak™ Music Kit | Lennie Moore, Java Havana Funkaloo",
"market_name": "Musikkit (StatTrak™) | Lennie Moore, Java Havana Funkaloo",
"market_tradable_restriction": "7",
"marketable": 1,
"name": "Musikkit (StatTrak™) | Lennie Moore, Java Havana Funkaloo",
"name_color": "CF6A32",
"owner_descriptions": "",
"tags": [
{
"category": "Type",
"category_name": "Typ",
"internal_name": "CSGO_Type_MusicKit",
"name": "Musikkit"
},
{
"category": "Quality",
"category_name": "Kategorie",
"color": "CF6A32",
"internal_name": "strange",
"name": "StatTrak™"
},
{
"category": "Rarity",
"category_name": "Qualität",
"color": "4b69ff",
"internal_name": "Rarity_Rare",
"name": "Hohe Qualität"
}
],
"tradable": 1,
"type": "Musikkit (StatTrak™, Hohe Qualität)"
},
"1465854320_2106391327": {
"actions": [
{
"link": "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S%owner_steamid%A%assetid%D11709586920196371037",
"name": "Im Spiel untersuchen …"
}
],
"appid": "730",
"background_color": "",
"classid": "1465854320",
"commodity": 0,
"descriptions": [
{
"type": "html",
"value": "Verliehen für herausragende Dienste und Erfolge im Jahr 2016."
},
{
"type": "html",
"value": " "
},
{
"color": "99ccff",
"type": "html",
"value": "Ausgabedatum: 28. Dez. 2016 GMT"
},
{
"type": "html",
"value": " "
},
{
"type": "html",
"value": ""
}
],
"icon_drag_url": "",
"icon_url": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXQ9Q1LO5kNoBhSQl-fVOG_wcbQVmJ5IABWuoX3e1Y27P_efWwM74rhl4HblKX2MLqClz1XuZwijLCVpd6t3FW3-RFkNTz1LYGccQc_MkaQpAaz3mGjMg",
"icon_url_large": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXQ9Q1LO5kNoBhSQl-fVOG_wcbQVmJ5IABWuoX3e1Y27P_efWx94N2kk4XFxfP1Mb6IwzMF6ZQpi7GVpomtjQLgqkY-ZjimItOSelQ5aFqG-Fm8wvCv28EGLgDagg",
"instanceid": "2106391327",
"market_actions": [
{
"link": "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20M%listingid%A%assetid%D11709586920196371037",
"name": "Im Spiel untersuchen …"
}
],
"market_hash_name": "2016 Service Medal",
"market_name": "Verdienstmedaille 2016",
"market_tradable_restriction": "7",
"marketable": 0,
"name": "Verdienstmedaille 2016",
"name_color": "D2D2D2",
"owner_descriptions": "",
"tags": [
{
"category": "Type",
"category_name": "Typ",
"internal_name": "CSGO_Type_Collectible",
"name": "Sammlerstück"
},
{
"category": "Quality",
"category_name": "Kategorie",
"internal_name": "normal",
"name": "Normal"
},
{
"category": "Rarity",
"category_name": "Qualität",
"color": "eb4b4b",
"internal_name": "Rarity_Ancient",
"name": "Außerordentlich"
}
],
"tradable": 0,
"type": "Sammlerstück (Außerordentlich)"
},
请把重点放在最小值上——几乎所有的属性都与问题无关,
$.ajax()
调用(以及为什么在库存…json
的循环的for…中调用prices.json
?)对不起,我会将其更改为aptryvar prices=dataa.prices[name]?数据a.价格[名称][价格]:分钟
同样,在您的示例中,price
变量来自dataa.prices[name][price]
语句的位置不清楚,因此它可能也是未定义的
,请将此作为一个示例,重点放在最小值上-几乎所有属性都与问题无关,$.ajax()
调用也不相关(为什么在Inventory…json
的for…循环中调用prices.json
?)很抱歉,我将把它更改为aptryvar prices=dataa.prices[name]?dataa.prices[name][price]:min;
同样在您的示例中,price
变量从何处到dataa.prices[name][price]
语句,因此它也可能是未定义的
{
"status": "success",
"prices": [
{
"app_id": "730",
"context_id": "2",
"market_hash_name": "'Blueberries' Buckshot | NSWC SEAL",
"price": "1.44",
"pricing_mode": "market",
"skewness": "-0.01",
"created_at": 1609156019,
"icon_url": null,
"name_color": null,
"quality_color": null,
"rarity_color": null,
"instant_sale_price": null
},
{
"app_id": "730",
"context_id": "2",
"market_hash_name": "'The Doctor' Romanov | Sabre",
"price": "3.69",
"pricing_mode": "market",
"skewness": "-0.08",
"created_at": 1609107338,
"icon_url": null,
"name_color": null,
"quality_color": null,
"rarity_color": null,
"instant_sale_price": "1.48"
},
{
"app_id": "730",
"context_id": "2",
"market_hash_name": "'Two Times' McCoy | TACP Cavalry",
"price": "0.86",
"pricing_mode": "market",
"skewness": "0.11",
"created_at": 1609166685,
"icon_url": null,
"name_color": null,
"quality_color": null,
"rarity_color": null,
"instant_sale_price": null
},