javascript-slice(-1)中切片的用途是什么

时间:2015-12-11 17:45:51

标签: javascript

以下代码在某些时候返回意外输出(至少对我而言)。

    var arr1 = "john".split('');
    var arr2 = arr1;
    var arr3 = "jones".split('');
    arr2.push(arr3);
    console.log("array 1: length=" + arr1.length + " last=" + arr1.slice(-1));
  

//返回[j,o,n,e,s]

,而

 console.log("array 1: length=" + arr1.length + " last=" + arr1.slice(-2));
  

//返回[n,j,o,n,e,s]

这个输出背后的逻辑是什么?

1 个答案:

答案 0 :(得分:3)

您的数组是

["j", "o", "h", "n", ["j", "o", "n", "e", "s"] ]

因此,当您删除最后一个索引时,您只有数组

当你做两个时,你有阵列和字母“n”

只需自己做切片并查看结果:

console.log(arr1.slice(-1))  //[Array[5]]
console.log(arr1.slice(-2))  //["n", Array[5]]

输出看起来像是输出一个数组的原因是因为连接时会调用toString()。 .toString()只是展平数组并用逗号连接索引。