Javascript 删除后数组长度不更改

Javascript 删除后数组长度不更改,javascript,arrays,Javascript,Arrays,我有一个数组,可以存放卡片桌,但删除后,数组长度仍然相同 var卡=[“1H”、“2H”、“3H”、“4S”、“5C”、“6D”]; console.log(“卡片计数:+卡片.长度);//返回6 删除卡片[3];//返回真值 console.log(“卡片计数:+卡片.长度);//仍然返回6您需要使用拼接而不是删除来删除数组中的项。这是因为使用delete不会更改数组的长度 这就是为什么长度仍然相同,因为未定义的项仍然被计算在内 var卡=[“1H”、“2H”、“3H”、“4S”、“5C”

我有一个数组,可以存放卡片桌,但删除后,数组长度仍然相同

var卡=[“1H”、“2H”、“3H”、“4S”、“5C”、“6D”];
console.log(“卡片计数:+卡片.长度);//返回6
删除卡片[3];//返回真值

console.log(“卡片计数:+卡片.长度);//仍然返回6
您需要使用
拼接
而不是
删除
来删除数组中的项。这是因为使用
delete
不会更改数组的长度

这就是为什么长度仍然相同,因为
未定义的
项仍然被计算在内

var卡=[“1H”、“2H”、“3H”、“4S”、“5C”、“6D”];
console.log(“卡片计数:+卡片.长度);//返回6
//删除卡片[3];//返回真值
卡.拼接(3,1);
控制台.日志(卡片);

console.log(“卡片计数:+卡片.长度);//仍然返回6个固定长度的数组。当您声明一个数组时,JVM会为您的数组分配特定的大小(在您的例子中为6)。即使从数组中删除值,数组的长度也不会更改


如果您想动态更改数组,可以尝试使用ArrayList,它是一个集合,但可以作为动态数组使用。

您可以使用splice方法在JavaScript中添加/删除数组项。
例如:
array.splice(arrayIndex,要删除的元素编号,“xx”,“yy”)用于添加

array.splice(arrayIndex,要删除的元素编号)用于删除

var卡=[“1H”、“2H”、“3H”、“4S”、“5C”、“6D”];
console.log(cards.length);//6.
卡.拼接(2,1);//删除数组的第三个元素
控制台日志(卡片);//[“1H”、“2H”、“4S”、“5C”、“6D”];
console.log(cards.length);//5.
卡.拼接(2,0,“xx”,“yy”);
控制台日志(卡片);//[“1H”、“2H”、“4S”、“5C”、“6D”];

console.log(cards.length);//5
我现在了解到,
拼接(3,1)
完全移除该项目。
3
是项目索引,那么
1
是什么意思呢?值
1
是要删除的项目数。这是
splice
功能的参考“
delete
只会将项目替换为未定义的“不准确”。它将在阵列中生成一个空插槽。这不会改变长度,但此插槽不会被某些方法(如forEach、map等)访问。而如果只是将其设置为“未定义”,这些方法仍会进入。不完全是。。。很抱歉您很可能拥有一个长度为33且只有空插槽的数组(
Array(33)
)。设置长度并不是因为未定义值。不过,这太深了,无法准确解释数组在内存中的表示方式,所以您可能只想说“删除不会更改数组的长度”。您好!这个问题是关于JavaScript
Array
,而您似乎把这个问题混淆为关于Java
Array