Javascript 尽可能以最简单、最简洁的方式

Javascript 尽可能以最简单、最简洁的方式,javascript,methods,Javascript,Methods,我想在不使用sort()的情况下按升序或降序对数组值进行排序 我已经创建了一个函数,但是我对它不满意。 我相信下面的代码可以更简短 请让我知道在哪里修改,或者您也可以完全更改代码。先谢谢你 const func = arg => { let flip = false; let copy = []; for(let val of arg) copy[copy.length] = val; for(let i=0; i<arg.length;

我想在不使用sort()的情况下按升序或降序对数组值进行排序

我已经创建了一个函数,但是我对它不满意。 我相信下面的代码可以更简短

请让我知道在哪里修改,或者您也可以完全更改代码。先谢谢你


const func = arg => {
    let flip = false;
    let copy = [];

    for(let val of arg) copy[copy.length] = val;    
    for(let i=0; i<arg.length; i++) {
        const previous = arg[i-1];
        const current = arg[i];

        if(previous > current) {
            flip = true;
            copy[i] = previous;
            copy[i-1] = current;
        }
    }

    if(flip) return func(copy);
    return copy;
};

l(func([5,2,8,1,9,4,7,3,6]));


常量func=arg=>{
让flip=false;
让copy=[];
for(让参数的val)copy[copy.length]=val;
用于(设i=0;i电流){
翻转=真;
副本[i]=以前的副本;
复制[i-1]=当前;
}
}
如果(翻转)返回函数(复制);
返回副本;
};
l(func([5,2,8,1,9,4,7,3,6]);

如果您的输入由整数组成,如示例中所示,pne选项是将数组缩减为一个对象,该对象的键是数字,其值是迄今为止这些值出现的次数。然后,迭代对象(其
object.entries
将按数字键升序迭代整数键),并创建数组以返回:

const func=arr=>{
const valuesObj={};
arr.forEach((num)=>{
valuesObj[num]=(valuesObj[num]| | 0)+1;
});
返回Object.entries(valuesObj)
.平面图(
([num,count])=>数组(count).fill(num)
);
};
console.log(
func([5,2,8,1,9,10,10,11,4,7,3,6])

);这里不清楚您的目标是什么。听起来你想要更短的代码;大多数人想要更高效的代码。这是当前的n^2算法。因此它肯定会更有效。请编辑标题以反映更具体的问题。您能告诉我们为什么不想使用
排序
?可能应该是
整数键
-“数字键”建议它包括浮点数。