下面的代码有时会返回意外的输出(至少对我来说)。
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]
此输出背后的逻辑是什么?
你的数组是
["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()只是使数组变平并用逗号将索引连接在一起。