如何在JavaScript中自定义排序?不是字母或数字
我有许多列表需要根据特定的兴趣进行排序。使用值数组进行字母和数字排序将不起作用 举个例子。以下城市需要按此顺序显示。如何使用JavaScript实现这一点?有没有一种方法,我可以用一个数值来表示每个城市,然后用这些数值将城市排序到下面所需的顺序 索尔兹伯里、高点、威克、夏洛特、罗利、卡里、威尔逊可以使用如何在JavaScript中自定义排序?不是字母或数字,javascript,sorting,Javascript,Sorting,我有许多列表需要根据特定的兴趣进行排序。使用值数组进行字母和数字排序将不起作用 举个例子。以下城市需要按此顺序显示。如何使用JavaScript实现这一点?有没有一种方法,我可以用一个数值来表示每个城市,然后用这些数值将城市排序到下面所需的顺序 索尔兹伯里、高点、威克、夏洛特、罗利、卡里、威尔逊可以使用比较功能对元素进行排序: var arr = []; arr.sort(compare); /** copy paste from mdn - create whatever logic t
比较功能对元素进行排序:
var arr = [];
arr.sort(compare);
/** copy paste from mdn - create whatever logic to sort by **/
function compare(a, b) {
if (a is less than b by some ordering criterion) {
return -1;
}
if (a is greater than b by the ordering criterion) {
return 1;
}
// a must be equal to b
return 0;
}
将钥匙放入地图中:
var cityScores = {
Salisbury: 5, High Point: 10, Wake: 15, Charlotte: 20, Raleigh: 25, Cary: 30, Wilson: 35
};
然后,当您排序时,您可以参考该对象中的轻蔑:
cityList.sort(function(city1, city2) {
return cityScores[city1] - cityScores[city2];
});
如果阵列是包含城市的对象阵列,则:
objectList.sort(function(o1, o2) {
return cityScores[o1.city] - cityScores[o2.city];
});
一种解决方案,它不仅适用于列出的单词,而且优先于列出的单词
var数据=[
索尔兹伯里、夏洛特、法兰克福、杜塞尔多夫、罗利、,
“卡里”、“威尔逊”、“高点”、“威克”、“新泽西”
],
自定义排序=[
“索尔兹伯里”、“高点”、“威克”、“夏洛特”、“罗利”,
“卡里”,“威尔逊”
],
customLookup=customSort.reduce(函数(r,a,i){
r[a]=('000'+i).slice(-4);返回r;
}, {}),
customSortFn=函数(a,b){
return(customLookup[a]| | a).localeCompare(customLookup[b]| | b);
};
document.write(''+JSON.stringify(data.sort(customSortFn)),0,4)+''代码>您可以在对象中放置城市,并为每个城市添加order属性,例如…如何调整此代码以在数据透视表中进行自定义排序?您有示例吗,您的意思是什么?