【问题标题】:Booleans, arrays, and not typing 256 possible scenarios布尔值、数组和不键入 256 种可能的场景
【发布时间】:2018-04-15 15:53:13
【问题描述】:

我正在尝试制作一个基于 8 个布尔语句的程序。
我构建了array = [0,0,0,0,0,0,0,0];。 对于每种可能的组合,我需要让程序输出不同的文本。 为了使事情更简单,我可以删除任何包含少于 3 个真实陈述的可能性。
例如:if (array === [1,1,1,0,0,0,0,0]){console.log('Targets: 4, 5, 6, 7')}; 是否可以将其设置为如果值为 false 则将其添加到“目标:”的末尾?我对编码作为一种爱好非常陌生,并且只制作了 1 个广泛的程序。我觉得{console.log("Targets: " + if(array[0]===0){console.log(" 1,")} + if(array[2]===0)...}会代表我正在寻找的东西,但它作为代码很糟糕。

我确信之前有人遇到过这个问题,但我认为我没有足够的经验来使用正确的关键字进行搜索。

PS:如果我们能坚持最基础的工作,我将不胜感激,因为我在安装 discord.js 以外的新元素方面没有任何运气。

【问题讨论】:

    标签: arrays boolean discord discord.js


    【解决方案1】:

    这可以满足您的需要:

    const values = [1,1,1,0,0,0,0,0];
    const positions = values.map((v, i) => !v ? i : null).filter(v => v != null);
    
    console.log('Target: ' + positions.join(', '));

    本质上:

    1. Map 如果值为falsy(0 被认为是假的),则将每个值映射到其各自的索引,否则将其映射到null
    2. Filter 输出所有 null 值。
    3. Join 字符串的所有剩余索引。

    为了满足您的额外要求:

    const locations = ['Trees', 'Rocks', 'L1', 'R1', 'L2', 'R2', 'L3', 'R3'];
    const values = [1,1,1,0,0,0,0,0];
    const result = values.map((v, i) => !v ? locations[i] : null).filter(v => v != null);
    
    console.log('Target: ' + result.join(', '));

    【讨论】:

    • 首先,感谢您的帮助!我认为这会比我预期的要复杂一些。
    • 为简单起见,让我们重新组织代码并开发一个主干。 const dead = [1,1,1,0,0,0,0,0] const alive = dead.map((v, i) => !v ? i : null).filter(v => v != null); console.log('Target: ' + alive.join(', ')); 这会打印出“目标:0, 0, 0, 0, 0”还是我误解了Join?理想输出:“目标:R1、L2、R2、L3、R3”谢谢您的宝贵时间!
    • 您是否尝试在我的答案下方单击Run code sn-p?如果你有,你会看到输出是Target: 3, 4, 5, 6, 7。此外,您的问题中没有关于获得Target: R1, L2, R2, L3, R3 的输出所需的任何逻辑。
    • 我是 StackOverflow 的新手,看着按钮就像添加了一样。对于没有提供足够信息的道歉,我尝试简化我的要求,以便它们对其他人更有用。简而言之,我正在为 Destiny 2 的 Leviathan Raid 中的 Pleasure Gardens 遭遇制作 Discord.Js 机器人。在这次遭遇战中有 8 个不同的地点,每个地点都有一个目标。这些位置按相应索引的顺序命名如下:树木、岩石、L1、R1、L2、R2、L3 和 R3。我需要该程序来检测目标是否死亡,并在某个位置需要帮助时提醒队友。
    猜你喜欢
    • 2011-12-31
    • 1970-01-01
    • 2011-03-20
    • 2010-10-03
    • 2020-04-22
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    相关资源
    最近更新 更多