我正在尝试将这种排序转换为一种独特的排序:
const sort = arr => arr.sort((a, b) => a - b);
我尝试过这个:
const uniqSort = arr => {
const breadcrumbs = {};
for(let i =0; i<arr.length; i++){
if(breadcrumbs[arr[i]]){
arr.splice(i,1)
} else {
breadcrumbs[arr[i]] = true;
}
}
return arr.sort((a, b) => a - b);
};
由于某种原因它无法正常工作,有人知道为什么吗?
当我输入uniqSort([4,2,2,3,2,2,2]);
时
输出是[2,2,3,4]
而不是[2,3,4]
最佳答案
您在迭代时修改的是同一个数组。
const uniqSort = arr => {
const breadcrumbs = {};
const newArray = [];
for (let i = 0; i < arr.length; i++) {
if (!breadcrumbs[arr[i]]) {
breadcrumbs[arr[i]] = true;
newArray.push(arr[i]);
}
}
return newArray.sort((a, b) => a - b);
};
如果您正在寻找快速解决方案,如何从数组中过滤重复项,您可以将其转换为 Set,然后再转换回数组。
const uniqSort = arr => {
return Array.from(new Set(arr)).sort((a, b) => a - b);
};
关于javascript - 将排序转换为唯一排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64547198/