Javascript 尽可能以最简单、最简洁的方式
我想在不使用sort()的情况下按升序或降序对数组值进行排序 我已经创建了一个函数,但是我对它不满意。 我相信下面的代码可以更简短 请让我知道在哪里修改,或者您也可以完全更改代码。先谢谢你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;
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算法。因此它肯定会更有效。请编辑标题以反映更具体的问题。您能告诉我们为什么不想使用排序
?可能应该是整数键
-“数字键”建议它包括浮点数。