我正在尝试获取app_data
,因为它包含我需要的其他数据,例如质量,但每次我尝试记录app_data时都会出现未定义的,记录itemJson可以正常工作吗?
代码
function getBPPrice(item, itemJson){
console.log(itemJson);
console.log(itemJson.app_data);
console.log(itemJson.app_data.quality);
console.log(Prices.response.items[item].prices[itemJson.app_data.quality][itemJson.tradable].Craftable[0].value);
}
和
var item = theirItems[i].market_name;
var itemJson = JSON.stringify(theirItems[i], null, 4);
getBPPrice(item, itemJson);
现在,console.log(itemJson);按照我之前的说法工作,但是console.log(itemJson.app_data);只输出undefined,所以下一个输出是质量值不起作用。
的Json
Pastebin链接因为它很长,app_data也接近底部。
编辑:
我得到错误 -
未定义C:\ Users \ datpe \ Desktop \ d \ bot.js:89 的console.log(itemJson.app_data.quality); ^
TypeError:无法读取undefined的属性'quality' 在getBPPrice(C:\ Users \ datpe \ Desktop \ d \ bot.js:89:32) at processOffer(C:\ Users \ datpe \ Desktop \ d \ bot.js:136:4) 在TradeOfferManager.manager.on(C:\ Users \ datpe \ Desktop \ d \ bot.js:189:2) 在emitOne(events.js:115:13) 在TradeOfferManager.emit(events.js:210:7) at received.forEach(C:\ Users \ datpe \ node_modules \ steam-tradeoffer-manager \ lib \ polling.js:235:10) at Array.forEach(native) at getOffers(C:\ Users \ datpe \ node_modules \ steam-tradeoffer-manager \ lib \ polling.js:219:12) 在Helpers.checkNeededDescriptions(C:\ Users \ datpe \ node_modules \ steam-tradeoffer-manager \ lib \ index.js:483:4) 在Async.map(C:\ Users \ datpe \ node_modules \ steam-tradeoffer-manager \ lib \ assets.js:171:4)
答案 0 :(得分:2)
这不是100%清楚你要在这里做什么,但看起来你有一个数组theirItems
,theirItems
的每个成员都是你想要的对象。但是当你这样做的时候......
var itemJson = JSON.stringify(theirItems[i], null, 4);
itemJson
现在是一个字符串,表示您想要的对象,而不是对象本身。然后,您无法访问该对象的各个元素,如:
itemJson.app_data
因为它是一个字符串,而不是实际的对象。
我认为你想要做的只是抓住对象本身并将其传递给你的函数:
var itemJson = theirItems[i]
// then pass the actual object:
getBPPrice(item, itemJson);