javascript - 将此 .pop 方法调用到数组时,为什么会得到意外的 .length 结果
问题描述
我是JS的新手,所以请多多包涵。当我试图在一个定义为24 个元素.pop
的数组上调用该方法时,我使用了我认为这是错误的语法。调用on 数组返回值 10,即使最初有 24 个元素。当我使用语法调用该方法时,我没有遇到任何问题,返回值为 23。为什么这种语法差异会影响数组元素的长度?secretMessage
secretMessage = secretMessage.pop();
.length method
.pop
secretMessage.pop();
.length
let secretMessage = ['Learning', 'is', 'not', 'about', 'what', 'you', 'get', 'easily', 'the', 'first', 'time,', 'it', 'is', 'about', 'what', 'you', 'can', 'figure', 'out.', '-2015,', 'Chris', 'Pine,', 'Learn', 'JavaScript'];
secretMessage = secretMessage.pop();
console.log(secretMessage.length); // Returns 10
secretMessage.pop();
console.log(secretMessage.length); // Returns 23 (assuming the previous mutating method is not called beforehand)
解决方案
js pop方法从数组中删除最后一个元素并返回该元素。这会按预期更改数组的长度。
问题在于,当您将 pop 返回的值分配给同一个变量时,该变量现在指向数组末尾的对象,而不是再指向数组。这是一个例子:
const plants = ['broccoli', 'cauliflower', 'cabbage', 'kale', 'tomato'];
plants = plants.pop();
console.log(plants); //'tomato'
您可以通过检查以下代码来验证这一点:
const plants = ['broccoli', 'cauliflower', 'cabbage', 'kale', 'tomato'];
console.log(plants.pop());
// expected output: "tomato"
console.log(plants);
// expected output: Array ["broccoli", "cauliflower", "cabbage", "kale"]
plants.pop();
console.log(plants);
// expected output: Array ["broccoli", "cauliflower", "cabbage"]
推荐阅读
- r - facet_grid 和 facet_wrap 当它是百分比时改变轴比例
- wordpress - Wordpress Media Video 在特定时间开始并在焦点时自动播放
- python - Django email verification URL with token parameter
- java - 如何在 Intellij IDEA 中使用数据源
- jquery - How to pass user input to jquery .click using eventdata?
- bigdata - 如何全局增加oozie shell内存容器
- javascript - Time delay in js function load
- php - 批处理 - 多线程工匠服务器
- ios - how to move the secondViewController from the top of the firstViewController using panGesture?
- import - Enterprise Architect - 导入关系