日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

JavaScript基本知识

發(fā)布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript基本知识 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

數(shù)組的排序

JavaScript可以實現(xiàn)多維數(shù)組,對象數(shù)組等排序,語法如下

arrayobj.sort(sortfunction) 參數(shù)
arrayObj  必選項。任意 Array 對象。
sortFunction   可選項。是用來確定元素順序的函數(shù)的名稱。如果這個參數(shù)被省略,那么元素將按照 ASCII 字符順序進(jìn)行升序排列。 
說明
sort 方法將 Array 對象進(jìn)行適當(dāng)?shù)呐判?#xff1b;在執(zhí)行過程中并不會創(chuàng)建新的 Array 對象。 如果為 sortfunction 參數(shù)提供了一個函數(shù),那么該函數(shù)必須返回下列值之一: 
負(fù)值,如果所傳遞的第一個參數(shù)比第二個參數(shù)小。
零,如果兩個參數(shù)相等。 正值,如果第一個參數(shù)比第二個參數(shù)大

不會創(chuàng)建新的Array對象即數(shù)組在原數(shù)組上進(jìn)行排序,不生成副本。如果調(diào)用sort方法時沒有使用參數(shù),將按字母的順序進(jìn)行排序,即元素將按照 ASCII 字符順序進(jìn)行升序排列。

如果想按照其他標(biāo)準(zhǔn)進(jìn)行排序,就需要提供比較函數(shù),該函數(shù)要比較兩個值,然后返回一個用于說明這兩個值的相對順序的數(shù)字。比較函數(shù)應(yīng)該具有兩個參數(shù) a 和 b,其返回值如下:

  • 若 a 小于 b,在排序后的數(shù)組中 a 應(yīng)該出現(xiàn)在 b 之前,則返回一個小于 0 的值。
  • 若 a 等于 b,則返回 0。
  • 若 a 大于 b,則返回一個大于 0 的值。
//數(shù)值排序
function SortNumByAsc(a ,b) {return a - b;
}
function SortNumByDesc(a, b) {return b - a;
}var nArr = new Array(8, -6, 9, 20, -3, 5, 18, 12);
nArr.sort(SortNumByAsc);
console.info(nArr); //-6, -3, 5, 8, 9, 12, 18, 20 nArr.sort(SortNumByDesc); console.info(nArr); //20, 18, 12, 9, 8, 5, -3, -6

sort(fun)接受了比較2個數(shù)值大小的函數(shù),如果不比較數(shù)值的大小,如下

var phone = ["Apple", "Android", "WP7"];
phone.sort(); 
console.info(phone); //"Android", "Apple", "WP7"

數(shù)組直接調(diào)用sort后,數(shù)組按字母的順序?qū)?shù)組中的元素進(jìn)行排序,但如果是一個JSON數(shù)組如下

  var person = [];person[0] = { name: "Irving",age: 22, hobby: "eat" };person[1] = { name: "Jimmy", age: 27, hobby: "read" };person[2] = { name: "Rain",  age: 18, hobby: "sleep" };

現(xiàn)要根據(jù)age的大小對person排序,同樣需要構(gòu)造個對象數(shù)組排序的函數(shù),如下

//單鍵排序
function SortByTagName(name) {return function (o, p) {var a, b;if (typeof o === "object" && typeof p === "object" && o && p) {a = o[name];b = p[name];if (a === b) {return 0;}if (typeof a === typeof b) {return a < b ? -1 : 1;}return typeof a < typeof b ? -1 : 1;}else {throw ("error");}}
}

調(diào)用下吧

 var person = [{ name: "Irving", age: 22, hobby: "eat" },{ name: "Jimmy", age: 27, hobby: "read" },{ name: "Rain", age: 18, hobby: "sleep" }];person.sort(SortByTagName("age")); //根據(jù)age排序console.info(person[0]);   //{ name="Rain",  age=18,  hobby="sleep"}

這里,對象排序就基本實現(xiàn)了,那么可以實現(xiàn)像MSSQL中order by age ,name 一樣排序嗎,即先是對age排序,如果age相同,再比較name,必須可以,改造上述函數(shù)如下

//多鍵排序 (def可選參數(shù))
function SortByTagName(name, def) {return function (o, p) {var a, b;if (o && p && typeof o === 'object' && typeof p === 'object') {a = o[name];b = p[name];if (a === b) {return typeof def === 'function' ? def(o, p) : 0;}if (typeof a === typeof b) {return a < b ? -1 : 1;}return typeof a < typeof b ? -1 : 1;} else {throw ("error");}}
}

調(diào)用

 person.sort(SortByTagName("age", SortByTagName("name"))); //,SortByTagName("name") 可選參數(shù)

運用上述方法就可以隨便排序了,這里介紹個JQ插件 Jquery.tinysort ,

舉個列子

<ul class="xmpl" id="xnum"><li>unrennef</li><li>eisuqjios</li><li>241</li><li>20.6</li><li>851</li><li>65.3</li>
</ul>

只需調(diào)用 即可實現(xiàn)對li中的數(shù)值排序

$('ul#xnum>li').tsort();

結(jié)果

<ul id="xnum" class="xmpl"><li>20.6</li><li>65.3</li><li>241</li><li>851</li><li>eisuqjios</li><li>unrennef</li>
</ul>

API:http://tinysort.sjeiti.com/

?

修訂記錄

2012年6月21日18:48:23 開篇?? 數(shù)組的排序

?

轉(zhuǎn)載于:https://www.cnblogs.com/Irving/archive/2012/06/22/2558648.html

總結(jié)

以上是生活随笔為你收集整理的JavaScript基本知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。