Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/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,我知道我们可以定义json对象数组的自定义排序函数。但如果顺序既不是desc也不是asc,该怎么办。例如,假设我的数组如下所示: [ { name: 'u' }, { name: 'n' }, { name: 'a' }, { name: 'n', } ] 输出应如下所示: [ { name: 'n' }, { name: 'n' }, { name: 'a' }, { n

我知道我们可以定义json对象数组的自定义排序函数。但如果顺序既不是
desc也不是asc
,该怎么办。例如,假设我的数组如下所示:

[ {
    name: 'u'
  },
  {
    name: 'n'
  },
  {
    name: 'a'
  },
  { 
    name: 'n',
  } 
]
输出应如下所示:

[ {
    name: 'n'
  },
  {
    name: 'n'
  },
  {
    name: 'a'
  },
  { 
    name: 'u',
  } 
]
其中,所有以
n
开头的名称首先排序,然后是其余名称。我尝试了以下自定义排序功能:

_sortByName(a, b){
        if (a.name === 'n'){
            return 1;
        } else if(b.name === 'n'){
            return 1;
        } else if(a.name < b.name){
            return 1;
        } else if(a.name > b.name){
            return -1;
        }
    }
\u sortByName(a,b){
如果(a.name=='n'){
返回1;
}else if(b.name=='n'){
返回1;
}else if(a.nameb.name){
返回-1;
}
}

但是为对象返回的顺序是错误的。这里出了什么问题?

如果您有任意排序顺序,一个选项是将顺序分配给数组,然后使用
indexOf

var sortOrder=['n','a','u'];
var myArray=[{
姓名:“u”
},
{
姓名:‘n’
},
{
姓名:“a”
},
{
姓名:‘n’
}
];
排序(函数(a,b){
返回sortOrder.indexOf(a.name)-sortOrder.indexOf(b.name);
});

log(myArray)现在返回什么?
if(a.name=='n')
if(b.name=='n')
都返回
1
,似乎不正确。