【问题标题】:What does ~[Array].indexOf(key) do? [duplicate]~[Array].indexOf(key) 做什么? [复制]
【发布时间】:2014-08-20 04:44:33
【问题描述】:

我正在使用和调整 Express.js 存储库中包含的 MVC example

在其中一个模块中,有一个我不熟悉的 JavaScript 构造。目的是遍历对象上的键并跳过一些“保留”的键,但从 JavaScript 的角度来看,我不明白 tilde 发生了什么.

for (var key in obj) {
    if (~['name', 'prefix', 'engine', 'before'].indexOf(key)) continue; 
}

我读到它是按位 NOT 运算符,但希望能以通俗的方式解释这意味着什么,以及它在这个特定示例中的作用。

【问题讨论】:

  • 基本~-1==0,零是假的。
  • 如果在数组中找不到键..

标签: javascript node.js express operators bit-manipulation


【解决方案1】:

indexOf 如果未找到,则返回 -1~-10,即false。所以整个事情的意思是:如果key 在数组中找到,请继续。

【讨论】:

  • 你能添加一些颜色来解释为什么 ~-1 是 0 吗?我正在尝试阅读此内容,但不清楚如何处理负数。是~-X==0 吗?
  • @JDMaresco:NOT x = −x − 1,即-(-1)-1 == 0
  • -1 是一个由 32 位组成的有符号整数。他们每个人都是一个。逐位否定将它们中的每一个都归零。全零的整数为零。看到这个stackoverflow.com/a/9954783/328977,分配my_int = -1,然后自己试试。
  • 恰恰相反:整件事意味着如果在数组中找到key,则继续。
  • @aduch:你是对的!我会修复答案。谢谢!
猜你喜欢
  • 2013-01-19
  • 2019-07-24
  • 2018-10-14
  • 2011-07-20
  • 2012-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多