我环顾四周,无法弄清楚为什么我会在这个简单的旋转算法上抛出这个错误。发生在 .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/