欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js中.sort()函數(shù)的常見用法與高級操作

 更新時間:2023年05月13日 09:25:03   作者:Living-v  
JavaScript中的sort函數(shù)可以用來對數(shù)組進行排序,默認(rèn)情況下sort函數(shù)將數(shù)組中的元素轉(zhuǎn)換為字符串,并按照Unicode碼點的順序進行排序,下面這篇文章主要給大家介紹了關(guān)于js中.sort()函數(shù)的常見用法與高級操作的相關(guān)資料,需要的朋友可以參考下

這是.sort()函數(shù)最常見的用法

//沒有函數(shù)參數(shù),按字符編碼格式排序
var arr = [3,2,3,34,12,23,234,84,9];
arr.sort();

// 結(jié)果: 12,2,23,234,3,3,34,84,9
// 需要升序或者降序則需要傳入一個函數(shù)參數(shù)
var arr = [3,2,3,34,12,23,234,84,9];
arr.sort(function (a, b) {
    return a - b;
});
// 結(jié)果:2,3,3,9,12,23,34,84,234

// 降序
var arr = [3,2,3,34,12,23,234,84,9];
arr.sort(function (a, b) {
    return b - a;
});

但或許你還對其為什么要這么操作存有一些疑惑

我們要先搞懂往.sort()里傳入的函數(shù)的參數(shù)a,b是什么

sort()要排序就要遍歷數(shù)組,以上面的數(shù)組為例子

其中遍歷第一步的a=3、b=2,

第二步時候a=2、b=3,

第三步的時候a=3,b=34

。。。。。。。

就像你寫的冒泡排序一樣,每一個元素都會被對比到

如何排序呢?這是w3c對其的解釋:

若 a 小于 b,在排序后的數(shù)組中 a 應(yīng)該出現(xiàn)在 b 之前,則返回一個小于 0 的值。
若 a 等于 b,則返回 0。
若 a 大于b,則返回一個大于 0 的值。

也就是說,在傳入的函數(shù)里如果你想a排在b前,就return一個小于0的數(shù)

如果你想a排在b后,就return一個大于0的數(shù)

這樣,就能完成對數(shù)組元素的排序了。

清楚了原理,那么我們就可以想到一些高級的騷操作了

關(guān)于對象數(shù)組的排序:

// 按age升序排列
var users =[
        { "name": "has",   "age": 17, "height": 165 },
        { "name": "saf",   "age": 20, "height": 172 },
        { "name": "gngh",  "age": 45, "height": 182 },
        { "name": "yjerw", "age": 42, "height": 156 },
        { "name": "cvb",   "age": 22, "height": 176 },
        { "name": "wetty", "age": 32, "height": 178 },
        { "name": "aDNY",  "age": 34, "height": 175 }
     ]
users.sort(function (a, b) {
    return a.age - b.age;
});
// 結(jié)果(升序):
/*
name:has age:17 height:165
name:saf age:20 height:172
name:cvb age:22 height:176
name:wetty age:32 height:178
name:aDNY age:34 height:175
name:yjerw age:42 height:156
name:gngh age:45 height:182
*/
// 按name排列
var users =[
        { "name": "has",   "age": 17, "height": 165 },
        { "name": "saf",   "age": 20, "height": 172 },
        { "name": "gngh",  "age": 45, "height": 182 },
        { "name": "yjerw", "age": 42, "height": 156 },
        { "name": "cvb",   "age": 22, "height": 176 },
        { "name": "wetty", "age": 32, "height": 178 },
        { "name": "aDNY",  "age": 34, "height": 175 }
     ]
var users.sort(function (a, b) {
    return a.name - b.name;
});
// 結(jié)果:
/*
name:aDNY age:34 height:175
name:cvb age:22 height:176
name:gngh age:45 height:182
name:has age:17 height:165
name:saf age:20 height:172
name:wetty age:32 height:178
name:yjerw age:42 height:156
*/
// 按布爾值排列
var users=[
        { "name": "has",   "age": 17, "height": 165, "state": true},
        { "name": "saf",   "age": 20, "height": 172, "state": false},
        { "name": "gngh",  "age": 45, "height": 182, "state": false },
        { "name": "yjerw", "age": 42, "height": 156, "state": true },
        { "name": "cvb",   "age": 22, "height": 176, "state": false },
        { "name": "wetty", "age": 32, "height": 178, "state": true },
        { "name": "aDNY",  "age": 34, "height": 175, "state": false }
     ]
users.sort(function (a, b) {
    return b.state- a.state;
});
//眾所周知,true - false = 1 
//結(jié)果
/*
[
  { name: 'has', age: 17, height: 165, state: true },
  { name: 'yjerw', age: 42, height: 156, state: true },
  { name: 'wetty', age: 32, height: 178, state: true },
  { name: 'saf', age: 20, height: 172, state: false },
  { name: 'gngh', age: 45, height: 182, state: false },
  { name: 'cvb', age: 22, height: 176, state: false },
  { name: 'aDNY', age: 34, height: 175, state: false }
]
*/

總結(jié)

到此這篇關(guān)于js中.sort()函數(shù)的常見用法與高級操作的文章就介紹到這了,更多相關(guān)js中.sort()函數(shù)用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • uniapp高頻面試題及答案合集

    uniapp高頻面試題及答案合集

    uni-app是一個使用Vue.js開發(fā)所有前端應(yīng)用的框架,開發(fā)者編寫一套代碼,可以發(fā)布到IOS、Android、Web(響應(yīng)式)、以及各種小程序、快應(yīng)用等多個平臺,下面這篇文章主要給大家介紹了關(guān)于uniapp高頻面試題及答案的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • easyUI實現(xiàn)(alert)提示框自動關(guān)閉的實例代碼

    easyUI實現(xiàn)(alert)提示框自動關(guān)閉的實例代碼

    下面小編就為大家?guī)硪黄猠asyUI實現(xiàn)(alert)提示框自動關(guān)閉的實例代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • echarts 3D地圖為區(qū)域自定義顏色的解決方法

    echarts 3D地圖為區(qū)域自定義顏色的解決方法

    在Echarts中,我們很多時候是需要給自己想要的幾個區(qū)域的地圖進行顏色高亮,這篇文章主要給大家介紹了關(guān)于echarts 3D地圖為區(qū)域自定義顏色的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • 淺談javascript中return語句

    淺談javascript中return語句

    這篇文章主要給大家簡單介紹了javascript中return語句,有需要的小伙伴可以參考下。
    2015-07-07
  • JS判斷移動端訪問設(shè)備并加載對應(yīng)CSS樣式

    JS判斷移動端訪問設(shè)備并加載對應(yīng)CSS樣式

    JS判斷不同web訪問環(huán)境,主要針對移動設(shè)備,提供相對應(yīng)的解析方案,本例是加載不同的css樣式
    2014-06-06
  • 詳解JavaScript節(jié)流函數(shù)中的Throttle

    詳解JavaScript節(jié)流函數(shù)中的Throttle

    函數(shù)節(jié)流,就是對會頻繁觸發(fā)的函數(shù)事件做一些限制,讓這些函數(shù)可以在每隔一定的時間或者每次滿足一定的條件下再觸發(fā)。一般我們會給他起一個名字throttle。也就是節(jié)流的意思。一般這樣的函數(shù)有 resize事件、ontouchmove事件等。
    2016-07-07
  • JS 獲取鼠標(biāo)左右鍵的鍵值方法

    JS 獲取鼠標(biāo)左右鍵的鍵值方法

    這篇文章主要介紹了JS 獲取鼠標(biāo)左右鍵的鍵值方法,很簡單,但很實用,特別是在做與用戶交互相關(guān)的東西
    2014-10-10
  • JavaScript對象之深度克隆介紹

    JavaScript對象之深度克隆介紹

    這篇文章主要介紹了JavaScript對象之深度克隆介紹,本文詳細(xì)的講解了什么是對象深度克隆,并給出了示例代碼,需要的朋友可以參考下
    2014-12-12
  • 百度Popup.js彈出框進化版 拖拽小框架發(fā)布 兼容IE6/7/8,Firefox,Chrome

    百度Popup.js彈出框進化版 拖拽小框架發(fā)布 兼容IE6/7/8,Firefox,Chrome

    百度空間的彈出窗口和拖拽效果(也就是popup.js),代碼精簡,效果也很好,我們可以在很多大型網(wǎng)站上見到這種效果,在我的項目中也使用了該js。
    2010-04-04
  • javascript算法學(xué)習(xí)(直接插入排序)

    javascript算法學(xué)習(xí)(直接插入排序)

    假設(shè)待排序的記錄存放在數(shù)組R[1..n]中。初始時,R[1]自成1個有序區(qū),無序區(qū)為R[2..n]。從i=2起直至i=n為止,依次將R[i]插入當(dāng)前的有序區(qū)R[1..i-1]中,生成含n個記錄的有序區(qū)。
    2011-04-04

最新評論