当前位置: 首页 > 知识库问答 >
问题:

在将“false”转换为布尔值之后,我的函数不会删除它

葛驰
2023-03-14

我试图创建一个函数,在转换为布尔值时移除所有“false”值,但是由于某种原因,“false”项并没有从数组中移除。

null

function bouncer(arr) {
  let y = []
  for (let i of arr) {
    if (Boolean(i) == false) {
      arr.splice(arr.indexOf(i), 1)
    }
  }
  console.log(arr)
}
bouncer([7, "ate", "", false, 9]);

null

共有2个答案

施彬郁
2023-03-14

您需要从数组末尾循环,因为您通过使用splice更改元素的索引。

null

function bouncer(arr) {
  let i = arr.length;
  while (i--) {
    if (!arr[i]) arr.splice(i, 1);
  }
  console.log(arr)
}
bouncer([7, "ate", "", false, 9]);
夹谷宜民
2023-03-14

迭代器(由为。。of调用)是懒惰的。它们不会在一开始就创建要迭代的所有项的集合。相反,在每次迭代开始时,它们递增要检查的索引,并在数组上查找该索引。

在本例中,在索引2上,(falsey)通过splice删除。拼接后,阵列现在是:

[7, 'ate', false, 9]

然后,迭代器继续到索引3,并检查9。从不迭代false

改用.filter:

null

js lang-js prettyprint-override">const bouncer = arr => arr.filter(Boolean);
console.log(bouncer([7, "ate", "", false, 9]));
 类似资料:
  • 我得到“删除字面上的”假“布尔值”以下语句错误,但我不确定是否有可能删除假。有什么想法吗?

  • 我有“删除字面上的”假“布尔值”声纳错误无状态==false。我该怎么修好它?

  • PHP是否有任何内置函数可以接受布尔值并返回其整数等效值?0代表FALSE,1代表TRUE?当然,您可以轻松创建一个函数来做到这一点,我只是询问PHP内部是否有内置函数。我已经尝试了并将其转换为但它们不起作用,它们在TRUE和FALSE两种情况下都返回0。 编辑:问题是它不是真正的布尔值,而是一个字符串“false”、“true”,php没有检测到传递布尔值的jquery帖子。问题解决了,谢谢!

  • lambda函数在给定bool函数时是否可能返回假值? 例如,此lambda函数产生True:

  • 问题内容: 我正在从文件中读取一个值,我需要将其转换为布尔值。当前,即使将值设置为,它也始终将其转换为。 这是我正在尝试做的事情: 该文件基本上由带有值或写入其中的单个字符串组成。这种安排看起来很复杂,因为这是来自更大代码的最小示例,这也是我将参数读入其中的方式。 为什么总是转换为? 问题答案: 并且总是返回,因为字符串’True’和’False’不为空。 引用伟人(和Python文档): [5.

  • 我知道在 C 和 C 中,当将布尔转换为整数时, 和。我想知道向相反方向投射... 在下面的代码中,以下所有断言在使用 Visual Studio 2013 和 Keil μVision 5 编译的 .c 文件中都适用。注意 。 关于将非零、非一整数转换为布尔值,C和C标准有何规定?是否指定了此行为?请包括引文。 对于任何C编译器,我可以假设(bool)true == (int)1不是重复的吗?

  • 问题内容: 在Java中将a转换boolean为an 的最常用方法是什么int? 问题答案: ^^ PS : true = 1 and false = 0

  • 问题内容: 我有一个pojo类,其中标志之一是Boolean类型。 当此属性获取非布尔值(不是fastxml时)时,杰克逊会自动将输入值转换为。调试了几个小时后,我发现这是在setter方法中发生的。 如果此属性的输入值为非布尔值,我想传递自定义消息。我已经编写了自己的注释来验证此属性的输入值,并返回自定义消息(如果它不是布尔值,但是杰克逊在检查自定义验证器之前将其绑定)。 使用杰克逊版本>>>