为什么字符串中的这个数字值在其他字符串之间会变成字符串?

问题描述 投票:0回答:1

我正在研究一个codewars问题,但不明白为什么会发生这种特殊情况。** 编辑 - 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'
]
javascript arrays
1个回答
0
投票

你不断移动数组的一个较小的前缀,但总是把0(任何一种类型)塞进最后一个位置,这样早期的0实际上不会被移动。 相反,你可以把0移到你正在处理的前缀的最后。

© www.soinside.com 2019 - 2024. All rights reserved.