javascript - a.push 不是一个函数; a.shift不是函数; a.splice 不是一个函数

标签 javascript arrays

我环顾四周,无法弄清楚为什么我会在这个简单的旋转算法上抛出这个错误。发生在 .push、.shift、.splice 中。请帮忙! (我知道有更有效的方法可以解决,只是想了解为什么我无法让这些方法发挥作用!)

function rotation(n, d) {
  var a = []
  for (i = 1; i <= n; i++) {
    a += i
  };

  for (x = 1; x <= d; x++) {
    a.push(a[0]);
    a.shift();
  }
  console.log(a)
}
rotation(5, 4)

最佳答案

a += i 表示 a = a + i+ 对于数组没有特殊含义。通过使用 +,您可以强制转换为原语(在本例中为字符串)并进行字符串连接。从那时起 a 引用的是字符串,而不是数组,它没有数组方法。

如果要添加元素,请使用 push,而不是 +:

for(i=1; i <= n; i++){
    a.push(i);
}
<小时/>

另请注意,分号 (;) 不要出现在带有附加 block 的控制流语句的末尾,而可以出现在在所有其他语句的末尾(例如,原始的 a += i、靠近末尾的 console.log 等)。

关于javascript - a.push 不是一个函数; a.shift不是函数; a.splice 不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49350094/

相关文章:

C# 从文件读取数据 block 到字节数组

javascript - Angular 链接函数中作用域变量的范围是多少?

javascript - 通过单击动态更改 li 选择

javascript - 在 javascript 中,如何从 td 单元格中获取类名?

javascript - 如何避免 jQuery 的按键延迟?

C strcmp 将字符串与数组的前 x 个字符进行比较

使用空格字符进行 JavaScript 密码验证

c - 用 C 验证条形码

java - 查找某个项目在数组中出现的次数

javascript - 如何使 Math.random 数组元素比另一个数组元素更有可能被选择