輸入:
var arr = [{ fName: "a" }, { fName: 1 }, { fName: "A" }];
預期產出
var arr = [{ fName: 1 }, { fName: "A" },{ fName: "a" }];
假設鍵 fName 是一個員工姓名,我們希望[1,'A','a']像這樣對這個物件進行排序,但是以物件形式。這個怎么做?
uj5u.com熱心網友回復:
您可以優先考慮數字而不是檢查typeof變數的字串,并相應地回傳-1或1:
| compareFn(a, b) 回傳值 | 排序 |
|---|---|
| > 0 | 將 a 排在 b 之后 |
| < 0 | 在 b 之前排序 a |
| === 0 | 保持 a 和 b 的原始順序 |
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
const arr = [{ fName: "a" }, { fName: 3 }, { fName: "A" }, { fName: 1 }];
console.log(
arr.sort((a, b) => {
if (typeof a.fName === 'number' && typeof b.fName !== 'number') {
return -1
}
if (typeof a.fName !== 'number' && typeof b.fName === 'number') {
return 1
}
if (a.fName < b.fName) {
return -1
}
if (a.fName > b.fName) {
return 1
}
if (b.fName === a.fName) {
return 0
}
})
)
uj5u.com熱心網友回復:
你只需要想出一個適當的排序功能。
- 它應該將數字與字串進行比較
- 它應該首先使大寫。
const sortByFName = (a, b) => a.fName
.toString()
.localeCompare(
b.fName.toString(), 'en', {
caseFirst: 'upper'
}
)
const result = [{
fName: "a"
}, {
fName: 1
}, {
fName: "A"
}].sort(sortByFName)
console.log(JSON.stringify(result))
uj5u.com熱心網友回復:
您可以使用Array.prototype.sort所需的任何比較代碼對陣列進行排序。
例如:
objArray.sort((a, b) => {
// Some code for comparison
});
了解有關排序功能的更多資訊:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/514778.html
標籤:javascript排序
上一篇:串列串列的就地快速排序
