Javascript 为什么减少数组的长度会使最后一个元素未定义,但长度不会';你不会变吗?
你好,我是javascript新手 我试图将数组的长度减少1 我这样做了,最后一个元素现在是未定义的,但长度仍然是5Javascript 为什么减少数组的长度会使最后一个元素未定义,但长度不会';你不会变吗?,javascript,arrays,Javascript,Arrays,你好,我是javascript新手 我试图将数组的长度减少1 我这样做了,最后一个元素现在是未定义的,但长度仍然是5 var-arr=[1,2,3,4,5]; arr.length=arr.length--; 控制台日志(arr); 控制台日志(arr.length)arr.length--会将长度减少1,但会返回以前的长度,这意味着您将数组的长度减少1,然后立即将以前的长度指定给arr.length,这意味着您将其更改回五元素数组(但是您已经删除了第五个元素,因此现在是未定义的) 如果只想减
var-arr=[1,2,3,4,5];
arr.length=arr.length--;
控制台日志(arr);
控制台日志(arr.length)
arr.length--
会将长度减少1
,但会返回以前的长度,这意味着您将数组的长度减少1,然后立即将以前的长度指定给arr.length
,这意味着您将其更改回五元素数组(但是您已经删除了第五个元素,因此现在是未定义的
)
如果只想减少数组的长度,可以单独使用arr.length--;
var-arr=[1,2,3,4,5];
arr.length;
控制台日志(arr);
console.log(arr.length);
您需要使用array.prototype.pop
来减小数组的大小:
var-arr=[1,2,3,4,5];
arr.pop();
控制台日志(arr);
console.log(arr.length);
如果要减少,可以使用“splice”
var arr = [1, 2, 3, 4, 5];
arr.splice(arr.length-1);
console.log(arr); //[1,2,3,4] --Expected Log
console.log(arr.length); //4 --Expected Log
或者您可以尝试以下方法:
var arr = [1, 2, 3, 4, 5];
arr.pop();
console.log(arr); //[1,2,3,4] --Expected Log
console.log(arr.length); //4 --Expected Log
array.length=array.length中发生的事件的时间线--
:
操作符将--
数组。长度从
更改为5
4
计算为array.length--
的上一个值,即array.length
5
- 此值被分配给
,将其从array.length
更改为4
5
slice
:
var-arr=[1,2,3,4,5];
var newArr=arr.slice(0,-1);
控制台日志(newArr);
console.log(newArr.length);
尝试array.length=array.length-1
简单地array.length-->
也可以工作。前后递增/递减运算符更改变量或属性的值;不需要额外的赋值。您也可以使用前递减运算符执行此arr.length=--arr.length;
但是<代码>arr.length--可以做任何事情,无需将其分配回使用--
和++
作为更大表达式的一部分会导致灾难。看在上帝的份上,不要写类似x=x--
的东西这不是这个问题的答案。