输入:
var arr = [{ fName: "a" }, { fName: 1 }, { fName: "A" }];
预期输出
var arr = [{ fName: 1 }, { fName: "A" },{ fName: "a" }];
假定键fName是一个员工名称,我们希望像这样对对象[1,'A','a']
进行排序,但以对象形式。如何做到这一点?
检查typeof
变量并相应返回-1
或1
时,可以优先考虑数字而不是字符串:
compareFn(a,b(返回值 | 排序顺序 |
---|---|
>0 | 在b之后对a排序 |
<0 | 在b |
===0 | 保持a和b的原始顺序 |
您只需要想出一个合适的排序函数。
- 它应该将数字与字符串进行比较
- 它应该先大写
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))
您可以使用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