數(shù)組對(duì)象要按屬性大小排序怎么辦犁享?
數(shù)組對(duì)象屬性排序
var arr = [{
data: 21,
weather:'晴'
}, {
data: 111,
weather:'小雨'
}, {
data: 32,
weather:'大雨'
}, {
data: 2,
weather:'小雨'
}, {
data: 2,
weather:'陰'
}, {
data: 212,
weather:'雪'
}]
我們要如何實(shí)現(xiàn)數(shù)組中的對(duì)象按data大小排序静尼?
sort方法
這里使用JavaScript sort() 方法禁悠,首先解釋下這個(gè)sort的方法
定義和用法
sort() 方法用于對(duì)數(shù)組的元素進(jìn)行排序刮便。
語法
arrayObject.sort(sortby)
返回值
對(duì)數(shù)組的引用讹蘑。請(qǐng)注意怀樟,數(shù)組在原數(shù)組上進(jìn)行排序功偿,不生成副本。
說明
如果調(diào)用該方法時(shí)沒有使用參數(shù)往堡,將按字母順序?qū)?shù)組中的元素進(jìn)行排序械荷,說得更精確點(diǎn),是按照字符編碼的順序進(jìn)行排序虑灰。要實(shí)現(xiàn)這一點(diǎn)吨瞎,首先應(yīng)把數(shù)組的元素都轉(zhuǎn)換成字符串(如有必要),以便進(jìn)行比較穆咐。
如果想按照其他標(biāo)準(zhǔn)進(jìn)行排序颤诀,就需要提供比較函數(shù),該函數(shù)要比較兩個(gè)值对湃,然后返回一個(gè)用于說明這兩個(gè)值的相對(duì)順序的數(shù)字崖叫。比較函數(shù)應(yīng)該具有兩個(gè)參數(shù) a 和 b,其返回值如下:
若 a 小于 b拍柒,在排序后的數(shù)組中 a 應(yīng)該出現(xiàn)在 b 之前心傀,則返回一個(gè)小于 0 的值。
若 a 等于 b拆讯,則返回 0脂男。
若 a 大于 b恐锦,則返回一個(gè)大于 0 的值。
實(shí)戰(zhàn)
下面開始使用sort(sortby) 來進(jìn)行這個(gè)排序疆液,并打印到控制臺(tái):
function sortData(a, b) {
return b.data - a.data
}
arr.sort(sortData);
console.log(arr);
輸出結(jié)果:
tip:如果想要從小到大的順序可以把方法中a和b的位置互換一下。
function sortData(a, b) {
return a.data - b.data
}