数组拼接后是如何组织的

How is an array organised after being spliced?

本文关键字:何组织 拼接 数组      更新时间:2023-09-26

有一个数组:

var tab = ["a","b","c","d"];
tab.splice(0,2);

数组拼接后的起始索引是多少?怎么知道呢?

它总是0。即使你拼接,设置空,未定义,等等…

我的意思是,如果设置诸如tab[0]=null或tab[0]=undefined之类的内容,数组的长度和索引都是不变的。只有在拼接、删除阵列中的项目时,长度才会更改。示例:

 var array = [1,2,3,4,5,6,7,8];
 console.log('Array length: %s, and index 0 value : %s ',array.length, array[0] );    //should be 8 and 1
 array[0] = undefined;
 console.log('Array length: %s, and index 0 value : %s ',array.length, array[0] );    //should be 8 and undefined
 array[0] = null;
 console.log('Array length: %s, and index 0 value : %s ',array.length, array[0] );    //should be 8 and null;

现在添加拼接:

     var array = [1,2,3,4,5,6,7,8];
     console.log('Array length: %s, and index 0 value : %s ',array.length, array[0] );    //should be 8 and 1
     var arraySpliceLength = 2;
     array.splice(0,arraySpliceLength);
     console.log('Array length: %s, and index 0 value : %s ',array.length, array[0] );    //should be 6 and 3

长度发生了变化,但起始索引仍为0,值=array[array.length-arraySpliceLength]=2

拼接输入数组后,它返回新的数组,该数组也开始wint index=0。

您可以检查它,即使用for循环:

var output = tab.splice(0,2);
for (var i = 0; i < output.length; i++) {
  console.log(i, output[i]);
}

使用indexOf方法查看结果。

var tab = ["a","b","c","d"];
tab.splice(0,2);
console.log(tab);
console.log(tab.indexOf("c")); 

演示