Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/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_Arrays_Sorting - Fatal编程技术网

带有首选项的字符串的Javascript排序数组

带有首选项的字符串的Javascript排序数组,javascript,arrays,sorting,Javascript,Arrays,Sorting,我试图用JavaScript对数组进行排序,但我希望一个特定项始终位于排序的第一位,另一个特定项始终位于最后: var Person= [{ "Country": "Japan", "Name": "user1" }, { "Country": "Spain", "Name": "user24" }, { "Country": "Usa", "Name": "user1" }, { "Country": "Brazil", "Name": "

我试图用JavaScript对数组进行排序,但我希望一个特定项始终位于排序的第一位,另一个特定项始终位于最后:

var Person= [{
   "Country": "Japan",
   "Name": "user1"

}, {
   "Country": "Spain",
   "Name": "user24"

}, {
   "Country": "Usa",
   "Name": "user1"

}, {
   "Country": "Brazil",
   "Name": "user1"

}];
这是我的
比较
功能:

function compare(a,b) {
      if (a.Country< b.Country)
        return -1;
      if (a.Country> b.Country)
        return 1;
   //here aditional condition
      if(a.Country=="Spain") //condition for last item
          return 2; 
       if(a.Country=="Brazil") //condition for always in first item
          return -1; 
      return 0;
    }
功能比较(a、b){
如果(a国b.国家)
返回1;
//这里是传统条件
如果(a.Country==“西班牙”)//最后一项的条件
返回2;
if(a.Country==“巴西”)//始终在第一项中的条件
返回-1;
返回0;
}

我正在运行
Person.sort(比较)
进行排序。

首先,您还需要对照这些字符串检查
b
,其次,您的特殊比较需要排在常规比较之前

工作现场演示:

功能比较(a、b){
如果(a.Country==“西班牙”)返回1;
如果(a.Country==“巴西”)返回-1;
如果(b.Country==“西班牙”)返回-1;
如果(b.国家==“巴西”)返回1;
如果(a.Countryb.国家)返回1;
返回0;
}
个人变量=[{
“国家”:“日本”,
“名称”:“user1”
}, {
“国家”:“西班牙”,
“名称”:“user24”
}, {
“国家”:“美国”,
“名称”:“user1”
}, {
“国家”:“巴西”,
“名称”:“user1”
}];
Person.sort(比较);

控制台日志(个人)
b.country==“西班牙”
b.country==“巴西”
时,您需要检查条件……在正常比较之前,您需要检查这些条件。为什么不按国家分组<代码>Person.reduce(函数(o,current){o[current.Country]=(o[current.Country]| |【】)。concat(current.Name);return o},{})
。谢谢“因子的顺序确实会改变结果”:)嗨@jearca,你觉得我完全回答了你的问题吗?如果是这样,请不要忘记单击左侧的灰色复选标记,将我的答案标记为“已接受”。如果您的问题还没有完全回答,请详细说明您还需要知道什么,以便社区能够为您提供进一步的帮助!谢谢