我试图对JS中的一个对象数组进行排序,但由于某些原因,它无法工作。我从API请求的数组可能包含数字、大小写字母和一些汉字。
例:
const arr = [
{ "title": "!Test Segment and CSV" },
{ "title": "&test (SC)" },
{ "title": "1234test (SC)" },
{ "title": "AAShop1 (SC)" },
{ "title": "AAShop2(SC)" },
{ "title": "ABCshop123 (SC)" },
{ "title": "adidas Outlet" },
{ "title": "AIGLE" },
{ "title": "American Eagle" },
{ "title": "Châteraisé" },
{ "title": "Tekcent" },
{ "title": "반찬 & COOK" },
{ "title": "始祖鸟" },
{ "title": "春水堂" },
{ "title": "稻成" }
];我要按照以下规则进行排序。
之后
{ "title":"AAShop1 (SC)“},{ "title":"AAShop2(SC)”},{ "title":"ABCshop123 (SC)“},{”ABCshop123 (SC)“}{“标题”:“美洲鹰”},{“标题”:“阿迪达斯出口”},{“标题”:“Ch teraisé”},{ "title":"Tekcent“},{ "始祖鸟”},{“始祖鸟”},{ "title":"春水堂“},{ "title":"稻成”},{ "title":"반찬& COOK“}}
提前感谢您的帮助!
发布于 2022-07-11 10:51:04
.sort()和.localeCompare().注意,在OP中,输入数组已经正确排序,所以在这个答案中,我混淆了输入数组的顺序,以证明代码正确地工作。
const data = [{ "title": "BB" }, { "title": "Ac" }, { "title": "adidas" }, { "title": "AA" }, { "title": "Ba" }, { "title": "ABC" }];
const output = data.sort((a, b) => a.title.localeCompare(b.title));
console.log(output);
发布于 2022-07-11 10:48:23
你只需要在较低的情况下分类。
let myArr = [{ "title": "AA" }, { "title": "ABC" }, { "title": "Ac" }, { "title": "adidas" }, { "title": "Ba" }, { "title": "BB" }]
let sortList = myArr.sort(function (a, b) {
return a.title.toLowerCase() > b.title.toLowerCase()
})
console.log(sortList)
发布于 2022-07-12 11:54:00
您只需借助一个简单的lowerCase方法就可以实现这一点,而无需将字符串操作到Array.sort()中。
现场演示
let myArr = [{ "title": "AA" }, { "title": "ABC" }, { "title": "Ac" }, { "title": "adidas" }, { "title": "Ba" }, { "title": "BB" }];
let sortedArr = myArr.sort((a, b) => {
return a.title - b.title
});
console.log(sortedArr);
https://stackoverflow.com/questions/72937297
复制相似问题