Console.log输出错误结果[怪异行为]

时间:2018-06-30 13:14:57

标签: javascript

我有一个字符串,其中使用split('')转换为数组。我只想使用splice()删除数组的最后一项。

但是,删除最后一项后输出数组时,我得到了这个奇怪的结果。当我不使用console.log() in Chrome控制台时,它会正常输出。为什么会这样?

(在控制台中尝试此代码。它可以正常输出)

let strings = 'AA11111';
let splits = strings.split("");
splits.splice(0, splits.length - 1);

(这给了我错误的结果。[输出数组的最后一项。])

let strings = 'AA11111';
let splits = strings.split("");
splits.splice(0, splits.length - 1);
console.log(splits);

4 个答案:

答案 0 :(得分:2)

Array.prototype.splice()用于从数组中删除元素并更改原始数组的内容,它的第一个参数为需要删除元素的索引,第二个参数为要删除的元素数,因此如果您需要删除最后一个元素,则需要从 arr.length-1 开始,并且删除计数应为 1 ,请看下面的示例

let strings = 'AA11111';
let splits = strings.split("");
splits.splice(splits.length - 1,1);
console.log(splits);

答案 1 :(得分:1)

这里发生的是除最后一个元素之外的所有元素。这就是为什么在console.log时只使用1个元素修改数组的原因。而在第一种情况下,它将返回已删除的项目

splits.splice(0, splits.length - 1);

第一个参数是要删除元素的开始位置,第二个参数是元素数

答案 2 :(得分:0)

此输出对我来说很有意义。

Array.prototype#splice documentation.

读取
  

语法

     

array.splice(start[, deleteCount[, item1[, item2[, ...]]]])

     

参数

     

开始

     

开始更改数组的索引(原点为0)。如果更大   比数组的长度大,实际的起始索引将设置为   数组的长度。如果为负,则将从   数组的末尾(原点为-1),如果是绝对值,则将其设置为0   值大于数组的长度。

     

deleteCount 可选

     

一个整数,指示要删除的旧数组元素的数量。

从索引0('A')开始,删除长度为1的元素(六个元素)。您只剩下最后一个元素。 ('1')。

如果要删除最后一个元素,我将执行以下操作:

let strings = 'AA11111';
let splits = strings.split("");
splits.splice(-1, 1); //starting at the last element, delete one element. 
console.log(splits);

答案 3 :(得分:0)

这里发生的是除去了最后一个元素以外的所有元素。这就是为什么在console.log时只使用1个元素修改数组的原因。在第一种情况下,它将返回已删除的项目。

splits.splice(0, splits.length - 1);
 The modified array with just 1 element when you console.log. And in the first case it is returning the deleted items.