【问题标题】:using .slice method on an array在数组上使用 .slice 方法
【发布时间】:2014-06-09 04:08:09
【问题描述】:

我正在练习 JavaScript Koan 的数组部分,但我不完全理解为什么这些答案是正确的。如果有人可以澄清/让我知道我是否错了,我在下面添加了我的假设:

  it("should slice arrays", function () {
    var array = ["peanut", "butter", "and", "jelly"];

    expect(array.slice(3, 0)).toEqual([]);       

为什么不至少切片“果冻”,因为切片以 3? 0 的截断如何使其为空?

    expect(array.slice(3, 100)).toEqual(["jelly"]);  

如果截止索引超出数组中当前存在的索引, 这是否意味着从 slice 创建的新数组将包含所有 从 3 开始到数组末尾的索引?

    expect(array.slice(5, 1)).toEqual([undefined];  

如果起始索引不存在于 数组?

  });

【问题讨论】:

    标签: javascript slice


    【解决方案1】:

    Array.slice() 的第二个参数是切片的上限。

    把它想象成array.slice(lowestIndex, highestIndex)

    当您从索引 3 切片到索引 100 时,有一个项目(在您的情况下)的索引 >= 3 且 = 3 和

    --编辑--

    此外,array.slice() 永远不应返回未定义。这是使用它的优点之一。如果数组中没有匹配的值,您只需返回一个空数组。即使你说var a = new Array() 并且不向它添加任何值,调用a.slice(0,1) 只会给你一个空数组。从数组边界之外切片也只会返回一个空数组。 a.slice(250) 将返回 []a[250] 将未定义。

    【讨论】:

    • 谢谢,我明白了!
    猜你喜欢
    • 2020-12-04
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 2017-09-17
    • 2022-11-21
    • 1970-01-01
    相关资源
    最近更新 更多