gpt4 book ai didi

javascript - 将零移动到数组的末尾并保留非零元素而不改变顺序

转载 作者:行者123 更新时间:2023-11-30 19:15:16 25 4
gpt4 key购买 nike

我有一个混合数字数组,因此我需要在不更改普通 JAVASCRIPT 中非零数字顺序的情况下将零编号移动到末尾。

注意:这需要在不创建新数组的情况下处理。

例如:

inp_arr = [12,5,0,78,94,0,34,0,67];

预期输出:

[12,5,78,94,34,67,0,0,0];

我的实现方式:

function sortArray(inputArray){
let non_zeroArray = []
let zero_Array = [];
inputArray.map(item => {
item != 0 ? non_zeroArray.push(item) : zero_Array.push(item)
});
return non_zeroArray.concat(zero_Array)
}

console.log(
sortArray([32, 0, 12, 78, 0, 56, 0, 87, 0])
)

最佳答案

无论如何,您的解决方案非常好,因为它具有线性 O(n) 复杂度。因此,您不是对元素进行排序,而是过滤掉源数组,然后在末尾压入零。

为了提高可读性,您可以使用 native 过滤器方法。

如果出于某种原因您需要移动其他值,您可以使用该方法的第二个参数。

此外,您可能会在迭代期间推迟将零插入数组。只是将它们加起来并在最后组成数组。

const moveValueAtEnd = (arr, value) => {
let counter = 0;
return arr.filter((val) => {
const match = val === value;
enter code here
// in js, boolean is casted to 0 or 1 when using arithmetic operation
counter += match;

return !match;
}).concat(Array(counter).fill(value))

}

关于javascript - 将零移动到数组的末尾并保留非零元素而不改变顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58067831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com