亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我想對數組的元素進行排序[關閉]

我想對數組的元素進行排序[關閉]

嗶嗶one 2019-04-10 14:15:04
假設我有如下數組var array=[3,4,5,5,5,6,8,3,12,1,1,1];然后結果應該是array=[5,1,3,4,6,8,12];JavaScript或nodejs中必需的實現
查看完整描述

4 回答

?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

我在這個jsbin示例中使用了lodash和普通JavaScript數組方法的組合:

var arr = [3,4,5,5,5,6,8,3,12,1,1,1];var sorted = _.sortBy(_.toPairs(arr.reduce(function(agg, curr) {
  agg[curr] = agg[curr] ? agg[curr] + 1 : 1;

  return agg;}, {})), function(pair) {
  return -pair[1];}).map(function(pair) {
  return pair[0];});console.log(sorted); // => ["1", "5", "3", "4", "6", "8", "12"]

但是,排序順序"5"和順序"1"不同3,4,6,8,12,因為沒有為具有相同計數的數字指定排序順序。

上面所做的是創建number=>count(例如{ "1": 3, "5": 3 })的映射,然后將它們配對為元組(因為對象不能在JavaScript中確定性地排序:) [["1", 3], ["5", 3]]。然后,我們簡單地根據計數對元組集合進行排序,并映射元組集合以僅返回數字(例如["1", "5", /* etc. */ ])。


查看完整回答
反對 回復 2019-05-08
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

var array = [3, 4, 5, 5, 5, 6, 8, 3, 12, 1, 1, 1];var obj = {};array.forEach(e => obj[e] = obj[e] + 1 || 1);var sorted = Object.keys(obj)
    .map(e => ({ n: e, times: obj[e] }))
    .sort((a, b) => b.times - a.times)
    .map(e => e.n);document.write(sorted);


查看完整回答
反對 回復 2019-05-08
?
largeQ

TA貢獻2039條經驗 獲得超8個贊

function sortArray(array) { 


    var reducedArray = array.filter(function(item, pos) { //A copy without duplicates

       return array.indexOf(item) == pos;

    })


    var elementFreq = {} //Object that contains element frequencies

    for (var i=0; i<reducedArray.length; i++) {

        var count = 0;

        for (var j=0; j<array.length; j++) {

            if (array[j] == reducedArray[i]) {

                count++;

            }

        }

        elementFreq[array[i]] = count;

    }


    function compare(a,b) { //compares the frequency of two elements

        return elementFreq[b]-elementFreq[a]

    }


    reducedArray.sort(compare) //sorts reducedArray based using compare function


    return reducedArray 

}


查看完整回答
反對 回復 2019-05-08
  • 4 回答
  • 0 關注
  • 708 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號