Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中自定义排序?不是字母或数字_Javascript_Sorting - Fatal编程技术网

如何在JavaScript中自定义排序?不是字母或数字

如何在JavaScript中自定义排序?不是字母或数字,javascript,sorting,Javascript,Sorting,我有许多列表需要根据特定的兴趣进行排序。使用值数组进行字母和数字排序将不起作用 举个例子。以下城市需要按此顺序显示。如何使用JavaScript实现这一点?有没有一种方法,我可以用一个数值来表示每个城市,然后用这些数值将城市排序到下面所需的顺序 索尔兹伯里、高点、威克、夏洛特、罗利、卡里、威尔逊可以使用比较功能对元素进行排序: var arr = []; arr.sort(compare); /** copy paste from mdn - create whatever logic t

我有许多列表需要根据特定的兴趣进行排序。使用值数组进行字母和数字排序将不起作用

举个例子。以下城市需要按此顺序显示。如何使用JavaScript实现这一点?有没有一种方法,我可以用一个数值来表示每个城市,然后用这些数值将城市排序到下面所需的顺序

索尔兹伯里、高点、威克、夏洛特、罗利、卡里、威尔逊可以使用
比较功能对元素进行排序:

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属性,例如…如何调整此代码以在数据透视表中进行自定义排序?您有示例吗,您的意思是什么?