【问题标题】:Array.slice on array with one elementArray.slice 在一个元素的数组上
【发布时间】:2012-08-09 22:37:19
【问题描述】:

我真的对此感到困惑。如果我这样做:
[1].slice(1)
它返回一个空数组(在 chrome 交互式控制台中)。但如果我比较:
[1].slice(1) === []
它总是错误的。所以我的问题是,[1].slice(1) 真正返回什么?

【问题讨论】:

  • 你想做什么?索引 1 处没有可切片的内容
  • 向 javascript 编译器编写一个 lispy 并尝试翻译 (rest '(1))。

标签: javascript arrays slice


【解决方案1】:

=== 通过引用比较对象。
您正在比较两个 不同的 数组对象,它们都是空的。

如果要检查数组是否为空,请检查.length === 0是否。

【讨论】:

    【解决方案2】:

    这不是slice=== 的问题。

    如果您执行[1]==[1],则返回false

    这是因为===== 都通过引用比较对象

    【讨论】:

      【解决方案3】:

      [] === [] 也返回 false。 [1].slice(1) 实际上返回 []

      【讨论】:

        【解决方案4】:

        你最好检查一下长度:

        [1].slice(1).length; // falsey
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-15
          相关资源
          最近更新 更多