第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

在按值排序的單獨數(shù)組中獲取值和鍵

在按值排序的單獨數(shù)組中獲取值和鍵

開心每一天1111 2021-12-02 15:35:38
假設(shè)我有一個對象 {'a':20,'b':6,'c':21,'d':12}按降序?qū)χ颠M(jìn)行排序后,所需的輸出:Keys: ['c','a','d','b']和Values: [21,20,12,6]我怎樣才能有效地實現(xiàn)這一目標(biāo)?我開始知道我們不能根據(jù)值對 js 對象鍵進(jìn)行排序,因為鍵的順序每次都是隨機(jī)的。
查看完整描述

3 回答

?
猛跑小豬

TA貢獻(xiàn)1858條經(jīng)驗 獲得超8個贊

我開始知道我們不能根據(jù)值對 js 對象鍵進(jìn)行排序,因為鍵的順序每次都是隨機(jī)的。


這不是真的(它不是隨機(jī)的,而且每次都不同),但是對 JavaScript對象進(jìn)行排序幾乎從來沒有用。


您有多種選擇來獲取您顯示的數(shù)組。一個簡單的方法是使用Object.entries獲取一組[key, value]數(shù)組,然后sort通過map以下方式從中獲取鍵:


const obj = {'a':20,'b':6,'c':21,'d':12};

const keys = Object.entries(obj)

    .sort(([k1, v1], [k2, v2]) => v2 - v1)

    .map(([k, v]) => k);

console.log(keys);


Object.entries 相對較新,但如果需要,很容易填充。


如果您在 ES5 中需要它(使用Object.entriespolyfill):

var obj = {'a':20,'b':6,'c':21,'d':12};

var keys = Object.entries(obj)

    .sort(function(e1, e2) {

        return e2[1] - e1[1];

    })

    .map(function(e) {

        return e[0];

    });

console.log(keys);

在評論中,您還詢問了如何將值放在單獨的數(shù)組中。您可以map通過推入它來構(gòu)建該值數(shù)組作為副作用,如下所示:


const obj = {'a':20,'b':6,'c':21,'d':12};

const values = [];

const keys = Object.entries(obj)

    .sort(([k1, v1], [k2, v2]) => v2 - v1)

    .map(([k, v]) => {

        values.push(v);

        return k;

    });

console.log(keys);

console.log(values);

...或者如果使用map副作用困擾您(這通常不是最佳實踐),只需使用forEach(或for-of) 代替:


const obj = {'a':20,'b':6,'c':21,'d':12};

const keys = [];

const values = [];

Object.entries(obj)

    .sort(([k1, v1], [k2, v2]) => v2 - v1)

    .forEach(([k, v]) => {

        keys.push(k);

        values.push(v);

    });

console.log(keys);

console.log(values);

該for-of版本:


const obj = {'a':20,'b':6,'c':21,'d':12};

const keys = [];

const values = [];

for (const [k, v] of Object.entries(obj).sort(([k1, v1], [k2, v2]) => v2 - v1)) {

    keys.push(k);

    values.push(v);

}

console.log(keys);

console.log(values);

(您可以對 的結(jié)果使用臨時變量.sort,然后使用for (const [k, v] of theTemporaryVariable) {。)


查看完整回答
反對 回復(fù) 2021-12-02
?
烙印99

TA貢獻(xiàn)1829條經(jīng)驗 獲得超13個贊

const obj = {'a':20,'b':6,'c':21,'d':12};


const result = Object.keys(obj)

  .reduce((acc, key) => {

    const value = obj[key];

    acc.push({ key, value });

    acc.sort((a, b) => b.value - a.value);

    return acc;

  }, []);


console.log(result);

輸出


[

  { key: 'c', value: 21 },

  { key: 'a', value: 20 }

  { key: 'd', value: 12 }

  { key: 'b', value: 6 }

]


查看完整回答
反對 回復(fù) 2021-12-02
?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗 獲得超9個贊

嘗試這個。


const list = {'a':20,'b':6,'c':21,'d':12};


let myObject = Object.fromEntries(Object.entries(list).sort( (a,b) => b[1] - a[1] ));


Object.prototype.mySplit = function() {

  return Object.keys(this).map((key) => {

    return {

      key: key,

      value: this[key]

    };

  });

}


let keys = [];

let values = [];


let properties = myObject.mySplit();

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

    keys.push(properties[i]['key']);

    values.push(properties[i]['value']);

}


console.log(keys);

console.log(values);


查看完整回答
反對 回復(fù) 2021-12-02
  • 3 回答
  • 0 關(guān)注
  • 179 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號