我有一个字符串,其中使用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);
答案 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.