布尔值、数组和非键入 256 种可能的情况
Booleans, arrays, and not typing 256 possible scenarios
我正在尝试编写一个基于 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,则将其添加到 "Targets: " 的末尾?我对将编码作为一种爱好还很陌生,并且只制作了 1 个广泛的程序。我觉得 {console.log("Targets: " + if(array[0]===0){console.log(" 1,")} + if(array[2]===0)...}
会表现出我正在寻找的东西,但它作为代码很糟糕。
我确定以前有人遇到过这个问题,但我认为我的经验不足以使用正确的关键字进行搜索。
PS:如果我们能坚持最基本的,我将不胜感激,因为除了 discord.js.
,我还没有安装新元素。
这就是您所需要的:
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(', '));
本质上:
- Map each value to its respective index if the value is falsy (0 is considered falsy), otherwise map it to
null
.
- Filter 输出所有
null
值。
- 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(', '));
我正在尝试编写一个基于 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,则将其添加到 "Targets: " 的末尾?我对将编码作为一种爱好还很陌生,并且只制作了 1 个广泛的程序。我觉得 {console.log("Targets: " + if(array[0]===0){console.log(" 1,")} + if(array[2]===0)...}
会表现出我正在寻找的东西,但它作为代码很糟糕。
我确定以前有人遇到过这个问题,但我认为我的经验不足以使用正确的关键字进行搜索。
PS:如果我们能坚持最基本的,我将不胜感激,因为除了 discord.js.
,我还没有安装新元素。这就是您所需要的:
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(', '));
本质上:
- Map each value to its respective index if the value is falsy (0 is considered falsy), otherwise map it to
null
. - Filter 输出所有
null
值。 - 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(', '));