我有如下数组结构
[{
name: "Mobile Uploads"
}, {
name: "Profile Pictures"
}, {
name: "Reports"
}, {
name: "Instagram Photos"
}, {
name: "Facebook"
}, {
name: "My Account"
}, {
name: "Twitter"
}]
我想对数组重新排序,使其按以下顺序排列:Profile Pictures
、Mobile Uploads
、Instagram Photos
和对象之后按字母顺序排列。
最佳答案
您要做的是创建一个包含排序异常的对象。然后你可以写一个自定义sort()
解释异常的函数。
var list = [{
name: "Date"
}, {
name: "Mobile Uploads"
}, {
name: "Profile Pictures"
}, {
name: "Fig"
}, {
name: "Instagram Photos"
}, {
name: "Cherry"
}, {
name: "Apple"
}, {
name: "Banana"
}];
var exceptions = {
"Profile Pictures": 1,
"Mobile Uploads": 2,
"Instagram Photos": 3
}
list.sort(function(a, b) {
if (exceptions[a.name] && exceptions[b.name]) {
//if both items are exceptions
return exceptions[a.name] - exceptions[b.name];
} else if (exceptions[a.name]) {
//only `a` is in exceptions, sort it to front
return -1;
} else if (exceptions[b.name]) {
//only `b` is in exceptions, sort it to back
return 1;
} else {
//no exceptions to account for, return alphabetic sort
return a.name.localeCompare(b.name);
}
});
console.log(list);
关于javascript - 按字母顺序对数组进行排序,但有异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38448968/