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

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

JavaScript 對數(shù)組的數(shù)組進行排序

JavaScript 對數(shù)組的數(shù)組進行排序

達令說 2023-05-25 16:37:05
我想根據(jù)數(shù)組對數(shù)組數(shù)組進行排序,然后按數(shù)組中項目的長度進行排序。采用以下主排序數(shù)組:const key = [  "meraki",  "gsuite",  "active directory",  "sophos",  "manageengine"]我想采用類似于以下內(nèi)容的數(shù)組:const raw = [  ["manageengine"],  ["sophos"],  ["active directory"],  ["gsuite"],  ["meraki"],  ["sophos", "manageengine"],  ["active directory", "sophos"],  ["active directory", "manageengine"],  ["gsuite", "active directory"],  ["gsuite", "sophos"],  ["gsuite", "manageengine"],  ["meraki", "gsuite"],  ["meraki", "active directory"],  ["meraki", "sophos"],  ["meraki", "manageengine"],  ["active directory", "sophos", "manageengine"],  ["gsuite", "active directory", "sophos"],  ["gsuite", "active directory", "manageengine"],  ["gsuite", "sophos", "manageengine"],  ["meraki", "gsuite", "active directory"],  ["meraki", "gsuite", "sophos"],  ["meraki", "active directory", "sophos"],  ["meraki", "gsuite", "manageengine"],  ["meraki", "active directory", "manageengine"],  ["meraki", "sophos", "manageengine"],  ["gsuite", "active directory", "sophos", "manageengine"],  ["meraki", "gsuite", "active directory", "sophos"],  ["meraki", "gsuite", "active directory", "manageengine"],  ["meraki", "gsuite", "sophos", "manageengine"],  ["meraki", "active directory", "sophos", "manageengine"],  ["meraki", "gsuite", "active directory", "sophos", "manageengine"]];在上面的示例中,我希望raw根據(jù)key數(shù)組中的每個項目對數(shù)組進行排序。我的第一次嘗試是做類似的事情:const result = [];for (const name of result) {  const sorted = keys.filter((s) => s[0] === name);  result.push(...sorted);}result.sort((a, b) => a.length - b.length);但是,這只考慮了數(shù)組中的第一項,而不考慮其余項的排序。
查看完整描述

2 回答

?
躍然一笑

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

要排序,您必須首先檢查長度。如果兩者相等,我們必須檢查a/b中第一個元素的索引位置key。如果它們相同,則繼續(xù)移動到兩個數(shù)組中的下一個元素。


這個答案利用了0一個虛假價值的事實。例子是:0 || -1 //=> -1和1 || -1 //=> 1


const key = ["meraki", "active directory", "sophos"];


const raw = [

  ["meraki"],

  ["active directory"],

  ["sophos", "active directory"],

  ["active directory", "sophos"],

  ["sophos"],

  ["meraki", "active directory", "sophos"],

];


raw.sort((a, b) => (

  a.length - b.length || a.reduce((diff, _, i) => (

    diff || key.indexOf(a[i]) - key.indexOf(b[i])

  ), 0)

));


console.log(raw);

console.table(raw); // check browser console


查看完整回答
反對 回復 2023-05-25
?
慕雪6442864

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

考慮以下方法


const key = [

  "meraki",

  "active directory",

  "sophos"

]

const raw = [

   ["sophos"],

   ["meraki"],

   ["active directory"],

   ["sophos", "active directory"],

   ["active directory", "sophos"],

   ["meraki", "active directory", "sophos"]

]


const compareThis = (a, b) => {

  if (a.length !== b.length) {

    return a.length - b.length

  }

  let itemFound = 0;

  for (let keyIndex in key) {

    for (let aIndex in a ) {

      if(a[aIndex] === key[keyIndex]) {

        itemFound = -1;

        break;

      }

      if(b[aIndex] === key[keyIndex]) {

        itemFound = 1;

        break;

      }

    }

    if(itemFound !== 0) { break }

  }

  return itemFound;

}


const sortedData = raw.sort(compareThis)


console.log(sortedData)


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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