如何按此顺序对对象数组进行排序



输入:

var arr = [{ fName: "a" }, { fName: 1 }, { fName: "A" }];

预期输出

var arr = [{ fName: 1 }, { fName: "A" },{ fName: "a" }];

假定键fName是一个员工名称,我们希望像这样对对象[1,'A','a']进行排序,但以对象形式。如何做到这一点?

检查typeof变量并相应返回-11时,可以优先考虑数字而不是字符串:

之前对a排序
compareFn(a,b(返回值 排序顺序
>0 在b之后对a排序
<0 在b
===0保持a和b的原始顺序

您只需要想出一个合适的排序函数。

  1. 它应该将数字与字符串进行比较
  2. 它应该先大写

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

最新更新