2

我正在设置一个可以进行价格检查的 TF2 交易机器人。在定义布尔值是否以键计价时出现错误。

我尝试在 if 语句中将 isKeys 替换为 data[baseName].prices[qualityId.toString()].Tradable[craftable[isCraftable.toString()][0].currency == "keys" 但出现错误if 语句中的右括号。

var data = {

};
var currencies = {

};
requestify.get('https://backpack.tf/api/IGetPrices/v4?raw=1&since=0&key=5cf17c256780725011449df2')
    .then(function(response) {

    data = response.getBody().response.items;
    console.log(data["Australium Tomislav"].prices["11"].Tradable.Craftable);
  }
);
requestify.get('https://backpack.tf/api/IGetCurrencies/v1?key=5cf17c256780725011449df2')
  .then(function(response) {

      currencies = response.getBody().response.currencies;
  }
);

function toRef(keys, high) {
    if (high) {
        if (currencies.keys.price.value_high != undefined){
        return currencies.keys.price.value_high * keys
        } else {
            return currencies.keys.price.value * keys
        }
    } else {
        return currencies.keys.price.value * keys
    }
}
function getPrice(item, high) {
    var name = item.market_name;
    var quality = item.tags[0].name;
    var baseName = name.replace(quality + " ", "");
    var qualityId = itemQualities[quality];
    var isCraftable = true;
    var isKeys = data[baseName].prices[qualityId.toString()].Tradable[craftable[isCraftable.toString()][0].currency == "keys"; // Error here
    for (i = 0;i < item.description.length;i++) {
        if (item.description[i].value == '( Not Usable in Crafting )') {
            isCraftable = false;
        }
    }

    if (high) {
        if (isKeys) {
            return toRef(data[baseName].prices[qualityId.toString()].Tradable[isCraftable.toString()][0].value_high], true);
        } else {
            return data[baseName].prices[qualityId.toString()].Tradable[isCraftable.toString()][0].value_high];
        }
    } else {
        if (isKeys) {   
            return toRef(data[baseName].prices[qualityId.toString()].Tradable[isCraftable.toString()][0].value], false);
        } else {
            return data[baseName].prices[qualityId.toString()].Tradable[isCraftable.toString()][0].value];
        }
    }

}

`

G:\BOT\bot.js:106 var isKeys = data[baseName].prices[qualityId.toString()].Tradable[craftable[isCraftable.toString()][0].currency == "keys"; ^

SyntaxError: Unexpected token ;

是我得到的错误

4

3 回答 3

2

TL; DR:您]在错误的线路上遗漏了 a 。]而且您在以下几行中有额外的if(high){...}内容。

正如其他答案所暗示的那样,您]在该行 中缺少一个方括号。var isKeys = ...现在,我们不知道数据结构,所以它可以,

data[baseName]
    .prices[qualityId.toString()]
    .Tradable[craftable[isCraftable.toString()][0].currency*]*

或者

data[baseName]
    .prices[qualityId.toString()]
    .Tradable[craftable[isCraftable.toString()][0]*]*.currency

但是也,

你的线上有额外的方括号,

if (high) {
        if (isKeys) {
        /*--here>>*/return toRef(data[baseName].prices[qualityId.toString()].Tradable[isCraftable.toString()][0].value_high, true);
        } else {
        /*--here>>*/return data[baseName].prices[qualityId.toString()].Tradable[isCraftable.toString()][0].value_high;
        }
    } else {
        if (isKeys) {
        /*--here>>*/ return toRef(data[baseName].prices[qualityId.toString()].Tradable[isCraftable.toString()][0].value, false);
        } else {
        /*--here>>*/return data[baseName].prices[qualityId.toString()].Tradable[isCraftable.toString()][0].value;
        }
    }

同样,我们不知道确切的数据结构。

于 2019-06-18T20:11:12.820 回答
1

您缺少可交易的方括号

var isKeys = data[baseName].prices[qualityId.toString()].Tradable[craftable[isCraftable.toString()]][0].currency == "keys";
于 2019-06-18T20:05:58.580 回答
1

在该行]中,缺少方括号关闭 ( )。

您的线路是:

var isKeys = data[baseName].prices[qualityId.toString()].Tradable[craftable[isCraftable.toString()][0].currency == "keys"; // Error here

您打开一个括号,.Tradable[但直到该行的末尾才关闭。编译器期望 a]但找到 a ;

我不熟悉您正在使用的 API,但我认为以下内容可以解决该错误:

var isKeys = data[baseName].prices[qualityId.toString()].Tradable[craftable[isCraftable.toString()][0].currency == "keys"]; // << Notice the bracket before your semicolon
于 2019-06-18T20:06:29.897 回答