猿问

JS 数组,如果 var = 0 则不推送

我正在尝试为游戏“Ogame”制作脚本,我正在寻找一些关于 javascript 数组的帮助,这不是我的事,我承认。


// Civil ships

    var TransporterSmall = 0; // Petit Transporteur

    var TransporterLarge = 1500; // Grand Transporteur

    var ColonyShip = 0; // Vaisseau de Colonisation

    var Recycler = 0; // Recycleur

    var Probe = 1; // Sonde


// Battle ships

    var FighterLight = 0; // Chasseur Léger

    var FighterHeavy = 0; // Chasseur Lourd

    var Cruiser = 0; // Croiseur

    var Battleship = 0; // Vaisseau de Bataille

    var Interceptor = 0; // Traqueur

    var Bomber = 0; // Bombardier

    var Destroyer = 1; // Destructeur

    var Deathstar = 0; // EDLM

    var Reaper = 1; // Faucheur

    var Explorer = 1; // Eclaireur

这是玩家为每艘船手动设置数字的代码。


然后他有一个按钮,当他点击它时,它会推入一个数组。但我希望如果 var = 0,它不会被推送(非常重要)


document.getElementById('AutoSelect').onclick = function() {

        fleetDispatcher.shipsToSend = []; // Empty array

        fleetDispatcher.shipsToSend.push(

            {id:202,number: TransporterSmall},

            {id:203,number: TransporterLarge},

            {id:208,number: ColonyShip},

            {id:209,number: Recycler},

            {id:210,number: Probe},

            {id:204,number: FighterLight},

            {id:205,number: FighterHeavy},

            {id:206,number: Cruiser},

            {id:207,number: Battleship},

            {id:215,number: Interceptor},

            {id:211,number: Bomber},

            {id:213,number: Destroyer},

            {id:214,number: Deathstar},

            {id:218,number: Reaper},

            {id:219,number: Explorer});

        fleetDispatcher.refresh();

    };

我不知道如何诚实地进行,这一切都在我的脑海中混乱。希望你能帮助我,谢谢!


holdtom
浏览 134回答 3
3回答

弑天下

您可以尝试三元条件。如果 TransporterSmall 优于零,则第二部分是一个对象,因此它被推动。如果不优于零,则为 null(不推送任何内容):document.getElementById('AutoSelect').onclick = function() {        fleetDispatcher.shipsToSend = []; // Empty array        fleetDispatcher.shipsToSend.push(            TransporterSmall > 0 ? {id:202,number: TransporterSmall} : null,            etc...        fleetDispatcher.refresh();    };

慕勒3428872

您可以使用数组过滤和扩展运算符来完成此操作:document.getElementById('AutoSelect').onclick = function() {        fleetDispatcher.shipsToSend = []; // Empty array        fleetDispatcher.shipsToSend.push(...([            {id:202,number: TransporterSmall},            {id:203,number: TransporterLarge},            {id:208,number: ColonyShip},            {id:209,number: Recycler},            {id:210,number: Probe},            {id:204,number: FighterLight},            {id:205,number: FighterHeavy},            {id:206,number: Cruiser},            {id:207,number: Battleship},            {id:215,number: Interceptor},            {id:211,number: Bomber},            {id:213,number: Destroyer},            {id:214,number: Deathstar},            {id:218,number: Reaper},            {id:219,number: Explorer}]          .filter(item -> item.number !== 0))        );        fleetDispatcher.refresh();    };(我还没有彻底检查上面的语法,但这至少是我所了解的。)基本思想是:取出一长串项目,然后将它们放在方括号中,将它们变成一个数组。用于filter清除所有number为 0 的数组项。使用扩展运算符 ( ...) 将数组重新转换为 的参数列表push,但现在零计数项目消失了。

Helenr

终于成功了。过滤器是关键。感谢帮助 !document.getElementById('AutoSelect').onclick = function() {        let ships = [            {id:202,number: TransporterSmall},            {id:203,number: TransporterLarge},            {id:208,number: ColonyShip},            {id:209,number: Recycler},            {id:210,number: Probe},            {id:204,number: FighterLight},            {id:205,number: FighterHeavy},            {id:206,number: Cruiser},            {id:207,number: Battleship},            {id:215,number: Interceptor},            {id:211,number: Bomber},            {id:213,number: Destroyer},            {id:214,number: Deathstar},            {id:218,number: Reaper},            {id:219,number: Explorer}        ];        fleetDispatcher.shipsToSend = []; // Empty array        fleetDispatcher.shipsToSend = ships.filter(id => id.number > 0);        fleetDispatcher.refresh();    };
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答