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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

對(duì)象的值按降序排列

對(duì)象的值按降序排列

慕森卡 2023-06-15 16:39:56
我有這個(gè)對(duì)象:gladiators = {  Pesho: { Duck: '400' },  Gladius: { Heal: '200', Support: '250', Shield: '250' }}每個(gè)角斗士都有自己的能力,因?yàn)橹凳敲總€(gè)能力的技能,我想按總技能降序打印它們,這就是我現(xiàn)在的位置:for (let element in gladiators){         console.log(`${element}: ${Object.values(gladiators[element]).map(Number).reduce((a, b) => a + b, 0)} skill`);        for (let el in gladiators[element]){            console.log(`- ${el} <!> ${gladiators[element][el]}`)        }    }此代碼打印:Pesho: 400 skill- Duck <!> 400Gladius: 700 skill- Heal <!> 200- Support <!> 250- Shield <!> 250我只是想讓它打?。篏ladius: 700 skill- Shield <!> 250- Support <!> 250- Heal <!> 200Pesho: 400 skill- Duck <!> 400我希望總技能按降序排列,如果相等,則按升序排列,角斗士擁有的每種技能都相同。如果我讀了幾次指南有錯(cuò)誤,請(qǐng)建議我如何使我的問(wèn)題更清楚。
查看完整描述

4 回答

?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊

我們應(yīng)該能夠使用 Object.entries 和 Array.sort 按照我們的意愿排列對(duì)象,然后打印出結(jié)果:


gladiators = {

  Pesho: { Duck: '400' },

  Gladius: { Heal: '200', Support: '250', Shield: '250' }

}


// Get our array of gladiators, add total skill and add sorted abilities array.

let result = Object.entries(gladiators).map(([name, glad]) => { 

    let abilities = Object.entries(glad);

    return { name, Total: abilities.reduce((acc, [k,v]) => acc + Number(v) , 0), abilities: abilities.sort(([k1,v1], [k2,v2]) => v2 - v1) };

});


// Sort the result in descending order by total skill.

result.sort((a,b) => b.Total - a.Total);


// Print out our result.

result.forEach(res => { 

    console.log(`${res.name}: ${res.Total} skill`)

    res.abilities.forEach(([k,v]) => console.log(` - ${k} <!>`,v));

})


查看完整回答
反對(duì) 回復(fù) 2023-06-15
?
尚方寶劍之說(shuō)

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊

我會(huì)把你的計(jì)算分成一個(gè)單獨(dú)的數(shù)組,并在你輸出之前對(duì)這個(gè)新數(shù)組進(jìn)行排序。例如:


const gladiators = {

  Pesho: { Duck: '400' },

  Gladius: { Heal: '200', Support: '250', Shield: '250' }

}


const valueDescNameAsc = (a, b) => {

  if (a.value === b.value) return a.name.localeCompare(b.name)

  return a.value > b.value ? -1 : 1

}


// Transform data into arrays of objects (and calculate top-level value)

const gladiatorSkills = Object.entries(gladiators)

  .map(([name, skills]) => ({

    name,

    value: Object.values(skills).map(Number).reduce((a, b) => a + b, 0),

    skills: Object.entries(skills).map(([name, value]) => ({ name, value })).sort(valueDescNameAsc)

  }))

  .sort(valueDescNameAsc)


// Output the transformed gladiatorSkills data

for (let { name, value, skills } of gladiatorSkills) {

  console.log(`${name}: ${value} skill`)

  for (let { name, value } of skills) {

    console.log(`- ${name} <!> ${value}`)

  }

}


查看完整回答
反對(duì) 回復(fù) 2023-06-15
?
哆啦的時(shí)光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊

對(duì)象不是按照順序構(gòu)建的。這是數(shù)組的工作。查看您的數(shù)據(jù),擁有一個(gè)可以使用數(shù)組方法(例如排序)進(jìn)行操作的角斗士列表會(huì)更合適。


因此,在下面的示例中,我將您的數(shù)據(jù)重寫(xiě)為一個(gè)對(duì)象數(shù)組,其中包含嵌套數(shù)組。這將保證訂單將得到兌現(xiàn)。


它還將使代碼的操作不那么復(fù)雜,因?yàn)槟皇窃谔幚頂?shù)組,不需要轉(zhuǎn)換。map,reduce和的組合 sort將帶您到達(dá)您需要去的地方。


const gladiators = [

  {

    name: 'Pesho',

    stats: [

      {

        name: 'Duck',

        value: 400

      }

    ],

  },

  {

    name: 'Gladius',

    stats: [

      {

        name: 'Heal',

        value: 200

      },

      {

        name: 'Support',

        value: 300

      },

      {

        name: 'Shield',

        value: 250

      }

    ],

  },

];


gladiators


  /**

   * Calculate the total skill and

   * sort the skills based on their value.

   */

  .map(({ name, stats }) => {

    const skill = stats.reduce((acc, { value }) => acc + value, 0);

    const sortedStats = stats.sort((a, b) => b.value - a.value);

    return { name, skill, stats: sortedStats };

  })

  

  /**

   * Sort the gladiators by skill (desc)

   */

  .sort((a, b) => b.skill - a.skill)

  

  /**

   * Print the data

   */

  .forEach((gladiator) => {

    console.log(`${gladiator.name}: ${gladiator.skill}`)

    gladiator.stats.forEach(({ name, value }) => {

      console.log(`- ${name} <!> ${value}`);

    });

  });


查看完整回答
反對(duì) 回復(fù) 2023-06-15
?
繁花如伊

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊

我會(huì)通過(guò)創(chuàng)建一個(gè)新列表來(lái)簡(jiǎn)化這個(gè)問(wèn)題,以總技能水平為索引,然后對(duì)該列表進(jìn)行排序,并記錄每個(gè)條目;


注意:這段代碼可以進(jìn)一步簡(jiǎn)化,但我已經(jīng)這樣發(fā)布了,所以步驟對(duì) OP 來(lái)說(shuō)很清楚;


// Original data

const data = { Pesho: { Duck: '400' }, Gladius: { Heal: '200', Support: '250', Shield: '250' } };


// Index each gladiator on total skill

let indexOnTotal = {};

for (let obj of Object.entries(data)) {

  

    // Get obj value's

    const [name, skills] = obj;

  

    // Total Skill count

    const total = Object.keys(skills).reduce((sum,key)=>sum+parseFloat(skills[key]||0),0);

    

    // Add

    indexOnTotal[total] = obj;

}


// Sort

let sorted = Object.keys(indexOnTotal).sort().reverse().map(key=> ({...indexOnTotal[key],key:key}) );


// Log

for (var g in sorted) {


    // Original gladiator

    const [ name, skills, total ] = Object.values(sorted[g]);

    

     // Name + Total

     console.log(`${name} (${total} skill)`);

    

    // Skills

    for (const [name, value] of Object.entries(skills)) {

        console.log(`${name}: ${value}`);

    }

}

輸出;


Gladius (700 skill)

Heal: 200

Support: 250

Shield: 250

Pesho (400 skill)

Duck: 400


查看完整回答
反對(duì) 回復(fù) 2023-06-15
  • 4 回答
  • 0 關(guān)注
  • 188 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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