【发布时间】:2013-08-23 06:56:24
【问题描述】:
我有以下代码输出数组的长度,删除它,然后输出新的长度:
console.log($scope.adviceList.activeAdvices.length); // *1*
$scope.adviceList.activeAdvices.splice(id,1); // *id is a parameter*
console.log($scope.adviceList.activeAdvices.length); // *0*
console.log($scope.adviceList.activeAdvices.length); // *1*
delete $scope.adviceList.activeAdvices[id];
console.log($scope.adviceList.activeAdvices.length); // *0*
console.log($scope.adviceList.activeAdvices); // *[]*
删除后,数组正确显示为空。但是,它的长度仍然是 1。
【问题讨论】:
-
这些变量是在哪里声明的?
-
delete是“较低”级别的运算符。它直接作用于对象,它不“知道”数组。使用delete根本不会触发例程重新计算数组长度。 -
"delete 不会真正删除该项目,而是将其设置为 undefined" 这是不正确的。该属性被删除。试试
var a = [1]; delete a[0]; console.dir(a);
标签: javascript arrays