【问题标题】:console.log changes array length (capacity)console.log 更改数组长度(容量)
【发布时间】:2017-12-18 15:49:22
【问题描述】:

我很难理解为什么 console.log() 的位置会影响我的阵列的容量。这是小提琴:https://jsfiddle.net/xbqph81e/4/

代码如下:

const pressed = [];
const secretCode = '123456';

window.addEventListener('keyup', (e) => {
  console.log(e.key);
  pressed.push(e.key);

  console.log("First Log",pressed); //console.log here = array has capacity of 7 characters
  pressed.splice(-secretCode.length - 1, pressed.length - secretCode.length);

  //console.log("Second Log",pressed); //first console.log is commented and this uncommented = array has capacity of 6 characters
});
.as-console-wrapper { max-height: 100% !important; top: 0; }

有人知道为什么会这样吗?

【问题讨论】:

  • 因为您使用.splice 从数组中删除一个?

标签: javascript arrays console.log


【解决方案1】:

在第一个 console.log 中,您刚刚将新键推送到数组中,因此此时它的长度为 7。

之后,您调用.splice 使数组的长度与密钥相同(在本例中为 6),因此在此之后数组的长度将仅为 6。

console.log(大多数时候)在该点显示该变量的值,这恰好是长度为 6 的数组。

【讨论】:

    【解决方案2】:

    console.log 不会更改您的数组。 它正在被修改,因为splice() 方法更改了数组。您可以尝试使用 slice() 方法来代替它返回一个新数组。如果您选择这样做,则需要分配从pressed.slice() 返回的数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 2018-09-20
      • 2022-11-27
      • 1970-01-01
      • 1970-01-01
      • 2016-07-29
      • 2016-08-09
      相关资源
      最近更新 更多