在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ js對(duì)象中按照字母多少例如var obj={'a','baaa','aba','

js對(duì)象中按照字母多少例如var obj={'a','baaa','aba','a','aaaaa'}來(lái)排序

var obj={'a','baaa','aba','a','aaaaa'}
怎樣按照a的數(shù)量從大排到小

回答
編輯回答
凹凸曼

obj應(yīng)該是個(gè)數(shù)組吧

var obj =['a','baaa','aba','a','aaaaa']
obj.sort(function(a, b) { return a.length > b.length}) // 從小到大
obj.sort(function(a, b) { return a.length < b.length}) // 從大到小
2017年8月6日 04:40
編輯回答
蟲(chóng)児飛

兄弟,你的obj寫(xiě)法有問(wèn)題吧;

正常的對(duì)象寫(xiě)法應(yīng)該 {key: value}吧;你哪種應(yīng)該是數(shù)組比較合適var obj=['a','baaa','aba','a','aaaaa']

排序思路

  • 獲取obj的key數(shù)組
  • 對(duì)key進(jìn)行排序
  • 更具key賦值到新的obj上

代碼

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是對(duì)象
let obj = {aaaaa: 1, baaa: 2, aba: 3, a: 4, aaaaaaaaaaaaa: 5}
obj = sortObj(obj)

/**
*結(jié)果
*{aaaaaaaaaaaaa: 5, aaaaa: 1, baaa: 2, aba: 3, a: 4}
**/

//obj是數(shù)組
let obj = ['a','baaa','aba','a','aaaaa']
obj = ksort(obj)

/**
*結(jié)果
*["aaaaa", "baaa", "aba", "a", "a"]
**/
2018年7月26日 18:14
編輯回答
孤毒

首先,你的對(duì)象定義都是錯(cuò)誤的吧?是否應(yīng)該是數(shù)組?
其次對(duì)象中key是無(wú)序的(程序?qū)崿F(xiàn)中不保證對(duì)象屬性存儲(chǔ)有序,你只能先提取key,為數(shù)組,再對(duì)這個(gè)數(shù)組排序,然后依據(jù)數(shù)組輸出元素信息來(lái)保證有序輸出。)

2018年8月15日 21:45