我环顾四周,并且无法弄清楚为什么我会在这个简单的旋转算法上抛出这个错误。与.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)
答案 0 :(得分:9)
a += i
表示a = a + i
。 +
对数组没有特殊意义。通过使用+
,您将强制转换为原语 - 在本例中为字符串 - 并进行字符串连接。从那时起a
引用一个字符串,而不是一个数组,它没有数组方法。
如果您想添加元素,请使用push
,而不是+
:
for(i=1; i <= n; i++){
a.push(i);
}
另请注意,分号(;
)不会在附加了块的控制流语句的末尾,并且 do 结束时所有其他陈述(例如,您的原始a += i
,接近末尾的console.log
等等。)