删除后数组长度不变

时间:2018-08-31 05:03:56

标签: javascript arrays

我有一个可存放纸牌桌的阵列,但是删除后,该阵列的长度仍然相同。

var cards = ["1H", "2H", "3H", "4S", "5C", "6D"];
console.log("Cards Count: " + cards.length); // return 6 
delete cards[3]; // return true 
console.log("Cards Count: " + cards.length); // still returning 6

3 个答案:

答案 0 :(得分:1)

您需要使用splice而不是delete来删除数组中的项目。这是因为使用delete不会更改数组的长度。

这就是为什么长度仍然相同的原因,因为undefined项仍在计数中。

var cards = ["1H", "2H", "3H", "4S", "5C", "6D"];
console.log("Cards Count: " + cards.length); // return 6 
//delete cards[3]; // return true 
cards.splice(3,1);
console.log(cards);
console.log("Cards Count: " + cards.length); // still returning 6

答案 1 :(得分:0)

数组是固定长度的。声明数组时,JVM会为数组分配特定大小(例如6)。即使从数组中删除值,数组的长度也不会改变。

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

答案 2 :(得分:0)

您可以使用splice方法在JavaScript中添加/删除数组项。
例如:
array.splice(arrayIndex, No of Element to be removed, "xx", "yy");用于添加  
array.splice(arrayIndex, No of Element to be removed);删除

var cards = ["1H", "2H", "3H", "4S", "5C", "6D"];
console.log(cards.length); // 6
cards.splice(2, 1); // removes 3rd element of array
console.log(cards); // ["1H", "2H", "4S", "5C", "6D"];
console.log(cards.length); // 5
cards.splice(2, 0, "xx", "yy");
console.log(cards); // ["1H", "2H", "4S", "5C", "6D"];
console.log(cards.length); // 5