对数组使用.slice方法

using .slice method on an array

本文关键字:slice 方法 数组      更新时间:2023-09-26

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

  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];  

如果起始索引不存在于大堆

  });

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

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

当您从索引3切片到索引100时,有一个项目(在您的情况下)具有索引>=3和<100,所以你得到了一个包含这一项的数组。当您尝试从索引3到索引0进行切片时,不可能有任何项目满足条件index>=3和<0,所以得到一个空数组。

--编辑--

此外,array.slice()不应返回undefined。这就是使用它的优点之一。如果数组中没有匹配的值,你只会得到一个空数组。即使您说var a = new Array()并且不向它添加任何值,调用a.slice(0,1)也只会返回一个空数组。从数组边界外进行切片也只会返回一个空数组。CCD_ 6将返回CCD_ 7,而CCD_。