var obj={'a','baaa','aba','a','aaaaa'}
怎样按照a的数量从大排到小
var obj={'a','baaa','aba','a','aaaaa'}
怎样按照a的数量从大排到小
兄弟,你的obj写法有问题吧;
正常的对象写法应该 {key: value}吧;你哪种应该是数组比较合适var obj=['a','baaa','aba','a','aaaaa']
function ksort(arr) {
if (arr.length <= 1) {
return arr;
}
const pivotIndex=Math.floor(arr.length / 2);
const pivot = arr.splice(pivotIndex, 1)[0];
const pivotLength = pivot.match(/a/ig).length
let left = [];
let right = [];
for (let i = 0; i < arr.length; i++) {
if(arr[i].match(/a/ig).length <= pivotLength){
right.push(arr[i]);
} else {
left.push(arr[i]);
}
}
return ksort(left).concat([pivot], ksort(right));
}
function sortObj(obj){
if (obj instanceof Array) {
return ksort(obj);
} else {
let arrList = Object.keys(obj);
const sortList = ksort(arrList);
let newObj = {};
sortList.forEach((value) => {
newObj[value] = obj[value]
})
return newObj;
}
}
//obj是对象
let obj = {aaaaa: 1, baaa: 2, aba: 3, a: 4, aaaaaaaaaaaaa: 5}
obj = sortObj(obj)
/**
*结果
*{aaaaaaaaaaaaa: 5, aaaaa: 1, baaa: 2, aba: 3, a: 4}
**/
//obj是数组
let obj = ['a','baaa','aba','a','aaaaa']
obj = ksort(obj)
/**
*结果
*["aaaaa", "baaa", "aba", "a", "a"]
**/
首先,你的对象定义都是错误的吧?是否应该是数组?
其次对象中key是无序的(程序实现中不保证对象属性存储有序,你只能先提取key,为数组,再对这个数组排序,然后依据数组输出元素信息来保证有序输出。)
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答873 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
obj应该是个数组吧