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

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

使用函數(shù)中的變量對(duì)對(duì)象數(shù)組中的值進(jìn)行排序

使用函數(shù)中的變量對(duì)對(duì)象數(shù)組中的值進(jìn)行排序

我正在嘗試創(chuàng)建一個(gè)函數(shù),它接受對(duì)值進(jìn)行排序所需的對(duì)象的鍵(在本例中為&ldquo;kills&rdquo;)。我嘗試使用按字符串屬性值對(duì)對(duì)象數(shù)組進(jìn)行排序dynamicSort中所述,但我只是得到返回的列表。關(guān)于我在這里做錯(cuò)了什么有什么想法嗎?const list = [? ? {? ? ? ? name: 'compass',? ? ? ? kills: 35,? ? ? ? assists: 312? ? },? ? {? ? ? ? name: 'another one',? ? ? ? kills: 52,? ? ? ? assists: 32? ? },? ? {? ? ? ? name: 'another anothe one',? ? ? ? kills: 12,? ? ? ? assists: 30? ? }];const sortByType = (property) => {? return function (a, b) {? ? let result;? ? if (a[property] < b[property]) {? ? ? result = -1;? ? }? ? if (a[property] > b[property]) {? ? ? result = 1;? ? }? ? else {? ? ? result = 0;? ? }? ? return result;? };}let newList = list.sort(sortByType('kills'));console.log(newList);
查看完整描述

2 回答

?
拉風(fēng)的咖菲貓

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

嘿,您可以使用排序函數(shù)中的屬性簡(jiǎn)單地對(duì)數(shù)組進(jìn)行排序。

升序a[property] - b[property] 降序b[property] - a[property]

按名稱排序是將所有名稱轉(zhuǎn)換為一個(gè)數(shù)組,對(duì)它們進(jìn)行排序,然后循環(huán)進(jìn)行排序。這運(yùn)行起來n^2所以值得研究?jī)?yōu)化,但這會(huì)讓你越過終點(diǎn)線。

name注意:此功能將不起作用undefined。

const list = [

    {

        name: 'compass',

        kills: 35,

        assists: 312

    },

    {

        name: 'another one',

        kills: 52,

        assists: 32

    },

    {

        name: 'another anothe one',

        kills: 12,

        assists: 30

    }

]



const sortByString = () => {

    const strings = list.map(prop => prop.name).sort();

    let sorted = [];

    for(const idx in strings){

        let currString = strings[idx];

        for(const objIdx in list){

            console.log(currString, list[objIdx].name)

            if(list[objIdx].name === currString){

                sorted.push(list[objIdx]);

            }

        }

    }

    return sorted;

}

const dynamicSortByType = (property) => {

    return typeof list[0][property] === 'string' ? 

    sortByString() : list.sort((a,b) => a[property] - b[property])

}

console.log(dynamicSortByType('name'))


查看完整回答
反對(duì) 回復(fù) 2023-07-06
?
天涯盡頭無女友

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

簡(jiǎn)短回答:

你只是漏掉了這個(gè)詞else。


長(zhǎng)答案:

你有一個(gè)看起來像這樣的塊


if () {

}

if () {

}

else {

}

應(yīng)該是這樣的:


if () {

}

else if () {

}

else {

}

請(qǐng)注意else在第二個(gè)之前添加了if。如果沒有它,第二個(gè) if-else 將運(yùn)行,最后的 else 將取代第一個(gè) 的 true 情況所做的設(shè)置if。


例如,任何時(shí)候if (a[property] < b[property]) {,它實(shí)際上都會(huì)落入秒數(shù)if并else導(dǎo)致設(shè)置result = 0。


這是您進(jìn)行了微小修復(fù)的片段:


const list = [

    {

        name: 'compass',

        kills: 35,

        assists: 312

    },

    {

        name: 'another one',

        kills: 52,

        assists: 32

    },

    {

        name: 'another anothe one',

        kills: 12,

        assists: 30

    }

];


const sortByType = (property) => {

  return function (a, b) {

    let result;

    if (a[property] < b[property]) {

      result = -1;

    }

    else if (a[property] > b[property]) {  /* FIXED:  added `else` on this line */

      result = 1;

    }

    else {

      result = 0;

    }

    return result;

  };

}


let newList = list.sort(sortByType('kills'));

console.log(newList);


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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