国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

js sort方法指南

這篇具有很好參考價(jià)值的文章主要介紹了js sort方法指南。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

js sort方法指南

本文將詳細(xì)介紹如何使用sort方法對(duì)數(shù)組中的原始數(shù)據(jù)和對(duì)象進(jìn)行排序:

sort 方法簡(jiǎn)介

js提供了一個(gè)排序方法sort可以對(duì)數(shù)組進(jìn)行就地排序(意味著不進(jìn)行復(fù)制)并返回排序后的數(shù)組。我們可以通過(guò)傳遞對(duì)比函數(shù)來(lái)修改內(nèi)部的數(shù)組元素的順序,但是不能修改sort方法所使用的算法。

使用方式:

// 最簡(jiǎn)單的用法,不需要傳遞一個(gè)對(duì)比方法,使用默認(rèn)的
[].sort();

// 使用箭頭函數(shù)
[].sort((a, b) => {
 ...
})

// 傳遞一個(gè)方法
[].sort(compareFn)

在過(guò)去的 Chrome 中,排序算法并不像今天那么好。它之前的實(shí)現(xiàn)之一包括插入排序O(n2)。

但是在現(xiàn)在我們使用的是一種名為Tim Sort O(n log n)的算法,此算法修改了合并排序,作為自適應(yīng)穩(wěn)定的歸并排序變體。

穩(wěn)定的排序算法意味著如果兩個(gè)相同值的值彼此相鄰,則它們?cè)谂判蚝蟊3窒嗤捻樞颉?/p>

對(duì)原始數(shù)據(jù)進(jìn)行排序

對(duì)字符串?dāng)?shù)組進(jìn)行排序

const names = ["Darui", "Bee", "Naruto", "Ada", "Sasuke", "Baki", "A"];

console.log(names.sort());
// 輸出: ["A", "Ada", "Baki", "Bee", "Darui", "Naruto", "Sasuke"]

JavaScript 默認(rèn)按字典順序排序。字典順序意味著像字典一樣按字母順序排序。如果兩個(gè)字符串相等,則將最短的字符串放在第一位。

const str = ["aab", "ba", "aac", "bab", "aaa", "Aab", "aaaa"];

// 結(jié)果
"Aab" // 大寫(xiě)優(yōu)先
"aa|a"
"aa|aa" // 和aaa相同,但是比aaa多一個(gè)a字符
"aa|b"  // 第三個(gè)字符c比aaaa中的a靠后 
"aa|c"  // 第三個(gè)字符c比aab的b靠后
"ba"    // b比a靠后
"bab"

對(duì)數(shù)字?jǐn)?shù)字進(jìn)行排序

對(duì)于純數(shù)字?jǐn)?shù)組不能直接通過(guò)sort()方法進(jìn)行排序。

const scores = [9, 80, 19, 4, 20, 53];

console.log(scores.sort());

// 輸出:  [19, 20, 4, 53, 80, 9]
// 并不符合預(yù)期

默認(rèn)情況下,JavaScript 按字典順序排序。對(duì)于字符串來(lái)說(shuō)非常有用,但對(duì)于數(shù)字來(lái)說(shuō)卻很糟糕。我們必須通過(guò)一個(gè)對(duì)比方法。

function compareNumbers(a, b) {
  if (a < b) {
    return -1; // a 比 b 優(yōu)先
  } else if (a > b) {
    return 1;  // b 比 a 優(yōu)先
  }

  return 0; // 不修改順序
}

當(dāng)兩個(gè)元素傳遞給對(duì)比函數(shù),如果返回小于 0a則放在前面。如果結(jié)果大于0,b則放在第一位。如果結(jié)果等于0,則保持ab的順序相同。

function(a, b) return value 排序
> 0 b排在a前面
< 0 a排在b前面
=== 0 不改變順序

通過(guò)在對(duì)比函數(shù)中返回一個(gè)整數(shù),用于sort方法最終確定比較元素時(shí)的順序。

為了正確地對(duì)數(shù)字進(jìn)行排序,我們?cè)谙旅娴睦邮褂蒙?a > b)對(duì)數(shù)字進(jìn)行排序的方法。

const scores = [9, 80, 19, 4, 20, 53];

scores.sort((a, b) => {
  // 其實(shí)就是上面compareNumbers方法中的else if (a > b)判斷
  return a - b;
});

console.log(scores);
// 輸出  [4, 9, 19, 20, 53, 80]

降序就是使用b - a來(lái)實(shí)現(xiàn):

const scores = [9, 80, 19, 4, 20, 53];

scores.sort((a, b) => {
  // 其實(shí)就是上面compareNumbers方法中的if (a < b)判斷
  return b - a;
});

console.log(scores);
// 輸出 [80, 53, 20, 19, 9, 4]

對(duì)對(duì)象數(shù)組進(jìn)行排序

JavaScript 中,對(duì)象是具有key:value成對(duì)屬性集合的變量。

const characters = [{
    name: 'eren',
    age: 1
  },
  {
    name: 'mikasa',
    age: 20
  },
  {
    name: 'levi',
    age: 90
  },
  {
    name: 'armin',
    age: 10
  },
];

由于對(duì)象具有多個(gè)屬性,因此我們也需要傳遞一個(gè)對(duì)比函數(shù)來(lái)按我們想要的屬性進(jìn)行排序。

比如想按照年齡來(lái)排序

characters.sort((a, b) => {
  return a.age - b.age;
});

name則按字典順序排序。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-604956.html

characters.sort((a, b) => {
  // 確保大小寫(xiě)同步
  const nameA = a.name.toUpperCase();
  const nameB = b.name.toUpperCase();

  if (nameA < nameB) {
    return -1;
  }
  if (nameA > nameB) {
    return 1;
  }

  return 0;
});

console.log(characters);

到了這里,關(guān)于js sort方法指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 3分鐘搞懂:JavaScript 和 ECMAScript

    ECMAScript 是 JavaScript 語(yǔ)言的 國(guó)際標(biāo)準(zhǔn) ,JavaScript 是 ECMAScript 的 一種實(shí)現(xiàn) (Adobe ActionScript 和 JScript 同樣實(shí)現(xiàn)了 ECMAScript)。 ECMAScript 是歐洲計(jì)算機(jī)制造商協(xié)會(huì) ECMA(European Computer Manufacturers Association)發(fā)布的瀏覽器腳本語(yǔ)言標(biāo)準(zhǔn)。它是 262 號(hào)標(biāo)準(zhǔn)文件,又叫 ECMA-262。 ECMAScript 定義

    2023年04月22日
    瀏覽(27)
  • 深入理解 ECMAScript modules:提升你的 JavaScript 技能(一)

    深入理解 ECMAScript modules:提升你的 JavaScript 技能(一)

    ?? 前端開(kāi)發(fā)工程師、技術(shù)日更博主、已過(guò)CET6 ?? 阿珊和她的貓_ CSDN 博客專(zhuān)家、23年度博客之星前端領(lǐng)域TOP1 ?? ???高級(jí)專(zhuān)題作者、打造專(zhuān)欄《前端面試必備》 、《2024面試高頻手撕題》 ?? 藍(lán)橋云課 簽約作者、上架課程《Vue.js 和 Egg.js 開(kāi)發(fā)企業(yè)級(jí)健康管理項(xiàng)目》、《帶你

    2024年02月20日
    瀏覽(22)
  • 深入理解 ECMAScript modules:提升你的 JavaScript 技能(六)

    深入理解 ECMAScript modules:提升你的 JavaScript 技能(六)

    ?? 前端開(kāi)發(fā)工程師、技術(shù)日更博主、已過(guò)CET6 ?? 阿珊和她的貓_ CSDN 博客專(zhuān)家、23年度博客之星前端領(lǐng)域TOP1 ?? ???高級(jí)專(zhuān)題作者、打造專(zhuān)欄《前端面試必備》 、《2024面試高頻手撕題》 ?? 藍(lán)橋云課 簽約作者、上架課程《Vue.js 和 Egg.js 開(kāi)發(fā)企業(yè)級(jí)健康管理項(xiàng)目》、《帶你

    2024年02月21日
    瀏覽(31)
  • Node.js安裝與配置指南:輕松啟航您的JavaScript服務(wù)器之旅

    Node.js作為一個(gè)基于Chrome V8引擎的JavaScript運(yùn)行時(shí)環(huán)境,已經(jīng)成為現(xiàn)代web開(kāi)發(fā)中不可或缺的重要工具之一。它的出現(xiàn)極大地?cái)U(kuò)展了JavaScript的應(yīng)用范圍,使得開(kāi)發(fā)者可以利用同一種語(yǔ)言來(lái)編寫(xiě)前端和后端的代碼,從而實(shí)現(xiàn)全棧開(kāi)發(fā)。Node.js具有非阻塞I/O、事件驅(qū)動(dòng)的特性,使得它能

    2024年04月10日
    瀏覽(25)
  • 基于【ESLint+JavaScript Standard Style】標(biāo)準(zhǔn)的VUE/JS/html風(fēng)格指南

    基于【ESLint+JavaScript Standard Style】標(biāo)準(zhǔn)的VUE/JS/html風(fēng)格指南

    本規(guī)范是適用于小仙男團(tuán)隊(duì)及前端團(tuán)隊(duì)所搭建的各種前端框架代碼的通用風(fēng)格規(guī)范指南; 使用時(shí),請(qǐng)遵循指南細(xì)則進(jìn)行代碼風(fēng)格約束,并在提交之前確保進(jìn)行代碼風(fēng)格的修正操作; 本規(guī)范參考WEB行業(yè)知名的JavaScript Standard Style 規(guī)范指南。并將在后續(xù)使用過(guò)程中,逐步進(jìn)行符合

    2023年04月13日
    瀏覽(27)
  • JavaScript最熱門(mén)的開(kāi)發(fā)指南

    JavaScript最熱門(mén)的開(kāi)發(fā)指南

    ???鴻蒙專(zhuān)欄:想學(xué)鴻蒙的,沖 ?? C語(yǔ)言專(zhuān)欄:想學(xué)C語(yǔ)言的,沖 ???VUE專(zhuān)欄:想學(xué)VUE的,沖這里 ???CSS專(zhuān)欄:想學(xué)CSS的,沖這里 ?? Krpano專(zhuān)欄:想學(xué)VUE的,沖這里 ?? 上述專(zhuān)欄,都在不定期持續(xù)更新中?。。。。。。。。。。。?! 文章目錄: ? 前言 什么是JavaScript JavaS

    2024年01月22日
    瀏覽(37)
  • ECMAScript6歷史-前端開(kāi)發(fā)+ECMAScript+基礎(chǔ)語(yǔ)法+入門(mén)教程

    ECMAScript6歷史-前端開(kāi)發(fā)+ECMAScript+基礎(chǔ)語(yǔ)法+入門(mén)教程

    我們首先來(lái)看 ECMA 是什么。 ECMA ,讀音類(lèi)似“??茓尅?,是 歐洲計(jì)算機(jī)制造商協(xié)會(huì) (European Computer Manufacturers Association)的簡(jiǎn)稱(chēng),是一家國(guó)際性會(huì)員制度的信息和電信標(biāo)準(zhǔn)組織。1994年之后,由于組織的標(biāo)準(zhǔn)牽涉到很多其他國(guó)家,為了體現(xiàn)其國(guó)際性,更名為 Ecma 國(guó)際 (Ecma In

    2024年01月16日
    瀏覽(24)
  • 【前端靈魂腳本語(yǔ)言JavaScript⑤】——JS中數(shù)組的使用

    【前端靈魂腳本語(yǔ)言JavaScript⑤】——JS中數(shù)組的使用

    ?? 作者: 阿偉 ?? 個(gè)人主頁(yè): Flyme awei ?? 希望大家多多支持??一起進(jìn)步呀! ?? 文章對(duì)你有幫助??關(guān)注?點(diǎn)贊??收藏?? 第一種: var 數(shù)組名 = new Array(); 創(chuàng)建一個(gè)空數(shù)組 第二種: var arr2 = new Array(10); 創(chuàng)建一個(gè)定長(zhǎng)為10的數(shù)組 第三種 var arr3 = new Array(a,b,c); 創(chuàng)建時(shí)直接指定元素值

    2023年04月08日
    瀏覽(111)
  • JavaScript:js數(shù)組/對(duì)象遍歷方法

    一、js遍歷方法 序號(hào) 方法 描述 1 for 使用最基本的for循環(huán)可以遍歷數(shù)組 2 for of for...of語(yǔ)句用來(lái)遍歷可迭代對(duì)象(包括數(shù)組、Set、Map、字符串等),它可以替代傳統(tǒng)的for循環(huán)和forEach()方法。for...of循環(huán)每次迭代都將返回一個(gè)值,而不是索引。 3 for in for...in語(yǔ)句用來(lái)遍歷對(duì)象的可

    2024年02月09日
    瀏覽(29)
  • 掌握 JavaScript:從初學(xué)者到高級(jí)開(kāi)發(fā)者的完整指南之JavaScript對(duì)象(二)

    掌握 JavaScript:從初學(xué)者到高級(jí)開(kāi)發(fā)者的完整指南之JavaScript對(duì)象(二)

    可以大體分頁(yè)3大類(lèi): 第一類(lèi):基本對(duì)象,我們主要學(xué)習(xí)Array和JSON和String 第二類(lèi):BOM對(duì)象,主要是和瀏覽器相關(guān)的幾個(gè)對(duì)象 第三類(lèi):DOM對(duì)象,JavaScript中將html的每一個(gè)標(biāo)簽都封裝成一個(gè)對(duì)象 1.1.1 基本對(duì)象 1.1.1.1 Array對(duì)象 語(yǔ)法格式 Array對(duì)象時(shí)用來(lái)定義數(shù)組的。常用語(yǔ)法格式有如下

    2024年02月07日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包