我正在处理代码战问题,但不明白为什么会发生这种特殊情况。** 编辑 - codewars 问题要求您不使用现有的数组或对象原型方法。我将数字和数字数组作为字符串进行迭代,如果为 0 或“0”,则将它们放在末尾。我在“0”之后放置了一个0,它仍然是一个int,但是当我在它之后放置另一个“0”时,它变成了一个字符串。这是代码:
function removeZeros(array) {
let z = array.length - 1;
for (let i = 0; i <= z; i++) {
console.log(array);
if (array[i] === 0 || array[i] === '0') {
const x = array[i];
for (let j = i; j <= z; j++) {
array[j] = array[j + 1];
}
array[array.length - 1] = x;
z -= 1;
i -= 1;
}
}
return array;
}
console.log(removeZeros([1, '0', 5, 0, '5', 52, '0', 7, 0, '3', 1]));
在控制台中,这里是相关步骤的数组:
[
1, 5, '5', 52, '0',
7, 0, '3', 1, '0',
0
]
[
1, 5, '5', 52, 7,
0, '3', 1, '0', '0',
'0'
]