为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

holdtom 2022-07-15 10:11:28
我正在尝试为游戏“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();    };我不知道如何诚实地进行,这一切都在我的脑海中混乱。希望你能帮助我,谢谢!
查看完整描述

3 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

您可以尝试三元条件。


如果 TransporterSmall 优于零,则第二部分是一个对象,因此它被推动。如果不优于零,则为 null(不推送任何内容):


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

        fleetDispatcher.shipsToSend = []; // Empty array

        fleetDispatcher.shipsToSend.push(


            TransporterSmall > 0 ? {id:202,number: TransporterSmall} : null,

            etc...


        fleetDispatcher.refresh();

    };


查看完整回答
反对 回复 2022-07-15
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

您可以使用数组过滤和扩展运算符来完成此操作:


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();

    };

(我还没有彻底检查上面的语法,但这至少是我所了解的。)

基本思想是:

  1. 取出一长串项目,然后将它们放在方括号中,将它们变成一个数组。

  2. 用于filter清除所有number为 0 的数组项。

  3. 使用扩展运算符 ( ...) 将数组重新转换为 的参数列表push,但现在零计数项目消失了。


查看完整回答
反对 回复 2022-07-15
?
Helenr

TA贡献1780条经验 获得超3个赞

终于成功了。过滤器是关键。感谢帮助 !


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();

    };


查看完整回答
反对 回复 2022-07-15
  • 3 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信