为了账号安全,请及时绑定邮箱和手机立即绑定

js对象中按照字母多少例如var obj={'a','baaa','aba','a','aaaaa'

js对象中按照字母多少例如var obj={'a','baaa','aba','a','aaaaa'

米琪卡哇伊 2019-03-13 14:15:42
var obj={'a','baaa','aba','a','aaaaa'}怎样按照a的数量从大排到小
查看完整描述

3 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

obj应该是个数组吧


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}) // 从大到小


查看完整回答
反对 回复 2019-03-25
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

兄弟,你的obj写法有问题吧;


正常的对象写法应该 {key: value}吧;你哪种应该是数组比较合适var obj=['a','baaa','aba','a','aaaaa']


排序思路

获取obj的key数组

对key进行排序

更具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是对象

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"]

**/


查看完整回答
反对 回复 2019-03-25
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

首先,你的对象定义都是错误的吧?是否应该是数组?
其次对象中key是无序的(程序实现中不保证对象属性存储有序,你只能先提取key,为数组,再对这个数组排序,然后依据数组输出元素信息来保证有序输出。)

查看完整回答
反对 回复 2019-03-25
  • 3 回答
  • 0 关注
  • 488 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信