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

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

將 props 直接傳遞給實用函數(shù)

將 props 直接傳遞給實用函數(shù)

蠱毒傳說 2023-07-20 16:26:39
我有以下常用的排序功能,export const sortSelectOptions = (options, sortByKey = 'name', type) => {  switch (type) {    case 'alphaNumeric':      return options        .slice()        .sort((a, b) =>          Math.sign(            parseInt(a.name.replace(/["]$/, ''), 10) -            parseInt(b.name.replace(/["]$/, ''), 10)          )        );    case 'numeric':      return options.slice().sort((a, b) => (a.nominalSize > b.nominalSize ? 1 : -1));    default:      return sortBy(options, sortByKey)  }}我正在調(diào)用上面的函數(shù),如下所示,options => sortSelectOptions(options, null, 'numeric')對于數(shù)字類型,我基于排序nominalSize,現(xiàn)在我想直接從這里傳遞這個字段sortSelectOptions(options, null, 'numeric')作為道具。選項是對象數(shù)組,其中一個屬性是nominalSize。我正在尋找一種通用的排序功能。任何人都可以讓我知道如何將精確字段作為道具傳遞給通用函數(shù)以實現(xiàn)排序功能。提前謝謝了
查看完整描述

2 回答

?
藍山帝景

TA貢獻1843條經(jīng)驗 獲得超7個贊

如果我理解正確的話,您希望訪問值的邏輯在排序函數(shù)之外進行排序?


您可以通過名稱訪問屬性,如下所示:


export const sortSelectOptions = (options, sortByKey = 'name', type, fieldName) => {

  switch (type) {

    case 'alphaNumeric':

      return options

        .slice()

        .sort((a, b) =>

          Math.sign(

            parseInt(a.name.replace(/["]$/, ''), 10) -

            parseInt(b.name.replace(/["]$/, ''), 10)

          )

        );

    case 'numeric':

      return options.slice().sort((a, b) => (a[fieldName] > b[fieldName] ? 1 : -1));

    default:

      return sortBy(options, sortByKey)

  }

}

并用以下方式調(diào)用它:


options => sortSelectOptions(options, null, 'numeric', 'nominalSize')

或者您可以概括此模式并請求訪問器函數(shù),如下所示:


export const sortSelectOptions = (options, sortByKey = 'name', type, accessor) => {

  switch (type) {

    case 'alphaNumeric':

      return options

        .slice()

        .sort((a, b) =>

          Math.sign(

            parseInt(accessor(a).replace(/["]$/, ''), 10) -

            parseInt(accessor(b).replace(/["]$/, ''), 10)

          )

        );

    case 'numeric':

      return options.slice().sort((a, b) => (accessor(a) > accessor(b) ? 1 : -1));

    default:

      return sortBy(options, sortByKey)

  }

}

并用以下方式調(diào)用它:


options => sortSelectOptions(options, null, 'numeric', x => x.nominalSize)

options => sortSelectOptions(options, null, 'alphaNumeric', x => x.name)

后一個版本還允許您訪問深度嵌套的屬性。


查看完整回答
反對 回復 2023-07-20
?
慕姐4208626

TA貢獻1852條經(jīng)驗 獲得超7個贊

您可以像這樣傳遞道具名稱:


export const sortSelectOptions = (options, sortByKey = 'name', type, prop) => {

    //...

    return options.slice().sort((a, b) => (a[prop] > b[prop] ? 1 : -1));

    //...

}


查看完整回答
反對 回復 2023-07-20
  • 2 回答
  • 0 關(guān)注
  • 179 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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