亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何從數組中選擇最高的 3 個字符串值

如何從數組中選擇最高的 3 個字符串值

翻翻過去那場雪 2023-05-11 16:26:20
我有數組,其中有sequence number. 我只想從基于數組的數組中選擇前 3 個,sequence numbers而不是像 "sequesnce": "9.80.709.5This is my array這樣的序列號array1=[{    "orgId": 101,    "dId": 494,    "name": "Test1",    "sequesnce": "6.408.06.0 Sequesnce Date : Mon 08/06/2019 (Sections: P4.00344) Italy CR"},{    "orgId": 102,    "dId": 442,    "name": "Test2",    "sequesnce": "9.80.709.5 Sequesnce Date : Mon 06/04/2019 (Sections: P4.00344) Italy CR",},{    "orgId": 103,    "sequesnce": "9.138.309.0 Sequesnce Date : Mon 06/03/2019 (Sections: P4.45600) Spain HR",    "dId": 494,    "name": "Test3",},{    "orgId": 103,    "sequesnce": "8.208.409.0 Sequesnce Date : Mon 10/03/2019 (Sections: P4.568787) Spain HR",    "dId": 494,    "name": "Test3",},{    "orgId": 103,    "sequesnce": "9.408.90.3 Sequesnce Date : Mon 08/06/2019 (Sections: P4.00344) Italy CR",    "dId": 494,    "name": "Test3",},我正在尋找輸出topThree={"sequesnce": "9.80.709.5 Sequesnce Date : Mon 06/04/2019 (Sections: P4.00344) Italy CR",},{"sequesnce": "9.408.90.3 Sequesnce Date : Mon 08/06/2019 (Sections: P4.00344) Italy CR",},{"sequesnce": "9.138.309.0 Sequesnce Date : Mon 06/03/2019 (Sections: P4.45600) Spain HR",},我試過這個function arrayMax(arr) {return arr.reduce(function (p, v) {  return ( p > v ? p : v );});}]var maximo = arrayMax(obj); //return the high這讓我回來{    "orgId": 102,    "dId": 442,    "name": "Test2",    "sequesnce": "9.80.709.5 Sequesnce Date : Mon 06/04/2019 (Sections: P4.00344) Italy CR",},此代碼返回單個數組而不是三個,并且不確定在所有情況下此邏輯是否有效。
查看完整描述

3 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

您可以排序String#localeCompare并選擇按點值列排序。

最后取前三項Array#slice

const

? ? array = [{ orgId: 101, dId: 494, name: "Test1", sequesnce: "6.408.06.0 Sequesnce Date : Mon 08/06/2019 (Sections: P4.00344) Italy CR" }, { orgId: 102, dId: 442, name: "Test2", sequesnce: "9.80.709.5 Sequesnce Date : Mon 06/04/2019 (Sections: P4.00344) Italy CR" }, { orgId: 103, sequesnce: "9.138.309.0 Sequesnce Date : Mon 06/03/2019 (Sections: P4.45600) Spain HR", dId: 494, name: "Test3" }, { orgId: 103, sequesnce: "8.208.409.0 Sequesnce Date : Mon 10/03/2019 (Sections: P4.568787) Spain HR", dId: 494, name: "Test3" }, { orgId: 103, sequesnce: "9.408.90.3 Sequesnce Date : Mon 08/06/2019 (Sections: P4.00344) Italy CR", dId: 494, name: "Test3" }],

? ? top3 = array

? ? ? ? .sort((a, b) => b.sequesnce.localeCompare(a.sequesnce, undefined, { numeric: true, sensitivity: 'base' }))

? ? ? ? .slice(0, 3)


console.log(top3);

.as-console-wrapper { max-height: 100% !important; top: 0; }


查看完整回答
反對 回復 2023-05-11
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

如果序列較短且前導值較高,則需要在排序前擴展元組 - 這不適用于 localeCompare


const maxLen = 4;

const expandTuple = tpl => {

  tpl = tpl.split('.');

  while (tpl.length < maxLen) tpl.unshift("000");

  return tpl.map(x => x.padStart(3, "0")).join('.');

};

const array1 = [{ "orgId": 101, "dId": 494, "name": "Test1",

    "sequence": "6.408.06.0 Sequence Date : Mon 08/06/2019 (Sections: P4.00344) Italy CR" },{"orgId": 102,"dId": 442,"name": "Test2",

    "sequence": "9.80.709.5 Sequence Date : Mon 06/04/2019 (Sections: P4.00344) Italy CR",},{"orgId": 103,

    "sequence": "99.1.1 NOTE THIS IS SHORTER Sequence Date : Mon 06/03/2019 (Sections: P4.45600) Spain HR","dId": 494,"name": "Test3",},{"orgId": 103,

    "sequence": "8.208.409.0 Sequence Date : Mon 10/03/2019 (Sections: P4.568787) Spain HR","dId": 494,"name": "Test3",},{"orgId": 103,

    "sequence": "9.408.90.3 Sequence Date : Mon 08/06/2019 (Sections: P4.00344) Italy CR","dId": 494,   "name": "Test3",  }

]



const three = array1.sort((a,b) => {

  const aTub = a.sequence.split(" ")[0];

  const bTub = b.sequence.split(" ")[0];

  if (expandTuple(aTub)<expandTuple(bTub)) return 1

  if (expandTuple(aTub)>expandTuple(bTub)) return -1

  return 0;

}).slice(0,3)

console.log(three)


// ---- compare other solution which fails on the shorter sequence


console.log(array1

  .sort((a, b) => b.sequence.localeCompare(a.sequence, undefined, { numeric: true, sensitivity: 'base' }))

  .slice(0, 3)

)


查看完整回答
反對 回復 2023-05-11
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

首先,使用Array.map,您可以僅生成項目對象數組sequesne。

并使用Array.sort,您可以按降序對數組進行排序。

并使用Array.splice,您可以從排序數組中提取前 3 項。

const array1 = [{

    "orgId": 101,

    "dId": 494,

    "name": "Test1",

    "sequesnce": "6.408.06.0 Sequesnce Date : Mon 08/06/2019 (Sections: P4.00344) Italy CR"

  },

  {

    "orgId": 102,

    "dId": 442,

    "name": "Test2",

    "sequesnce": "9.80.709.5 Sequesnce Date : Mon 06/04/2019 (Sections: P4.00344) Italy CR",

  },

  {

    "orgId": 103,

    "sequesnce": "9.138.309.0 Sequesnce Date : Mon 06/03/2019 (Sections: P4.45600) Spain HR",

    "dId": 494,

    "name": "Test3",

  },

  {

    "orgId": 103,

    "sequesnce": "8.208.409.0 Sequesnce Date : Mon 10/03/2019 (Sections: P4.568787) Spain HR",

    "dId": 494,

    "name": "Test3",

  },

  {

    "orgId": 103,

    "sequesnce": "9.408.90.3 Sequesnce Date : Mon 08/06/2019 (Sections: P4.00344) Italy CR",

    "dId": 494,

    "name": "Test3",

  }

];


const sortedArr = array1.map(({ sequesnce }) => ({ sequesnce })).sort((a, b) => (b.sequesnce.localeCompare(a.sequesnce, undefined, { numeric: true, sensitivity: 'base'})));


const topCount = 3;

console.log(sortedArr.splice(0, topCount));


查看完整回答
反對 回復 2023-05-11
  • 3 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號