一、 先根据字母排序,在根据数字排序
let arr = [
{name: 'admin'},
{name: 'Admin'},
{name: 'admin'},
{name: 'dom'},
{name: "3"},
{name: 'Boy'},
{name: 'bay'},
{name: "2"},
{name: 'com'},
{name: 'for'},
{name: "1"},
{name: "5"},
]
- 这行代码会根据每个对象中name属性的首字母进行排序,返回一个新的排好序的数组。
arr.sort((a, b) => a.name.localeCompare(b.name))
![](https://img.haomeiwen.com/i27099288/cc89115ba04f8adb.png)
- 这行代码会先判断每个对象中name属性的第一位是字母还是数字,如果第一位是字母,则排在前面,如果第一位是数字,则排在后面。如果第一位相同,则会根据每个对象中name属性进行排序。最后返回一个新的排好序的数组。
arr.sort((a, b) => {
const reg = /^[A-Za-z]/;
const aFirstIsLetter = reg.test(a.name);
const bFirstIsLetter = reg.test(b.name);
if (aFirstIsLetter && !bFirstIsLetter) {
return -1;
} else if (!aFirstIsLetter && bFirstIsLetter) {
return 1;
} else {
return a.name.localeCompare(b.name);
}
})
![](https://img.haomeiwen.com/i27099288/4e8d958b285f5781.png)
网友评论