我有一个可存放纸牌桌的阵列,但是删除后,该阵列的长度仍然相同。
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
答案 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