Javascript 修改以下排序函数,使其返回数字

Javascript 修改以下排序函数,使其返回数字,javascript,sorting,Javascript,Sorting,以下函数执行以下操作: 1) 如果isDefault===true和isDefault===false,则前者优先 2) 如果isDefault===true和isDefault===true,则按updatedAt降序排序 function sortPanoramas (panoramas) { panoramas.sort((a, b) => { if (a.isDefault !== b.isDefault) return a.isDefault < b.isDef

以下函数执行以下操作:

1) 如果
isDefault===true
isDefault===false
,则前者优先

2) 如果
isDefault===true
isDefault===true
,则按
updatedAt
降序排序

function sortPanoramas (panoramas) {
  panoramas.sort((a, b) => {
    if (a.isDefault !== b.isDefault) return a.isDefault < b.isDefault
    if (a.isDefault && b.isDefault) return a.updatedAt < b.updatedAt
    if (!a.isDefault && !b.isDefault) return a.name > b.name
  })
}
3) 如果
isDefault===false
isDefault===false
,则按
name
升序排序

function sortPanoramas (panoramas) {
  panoramas.sort((a, b) => {
    if (a.isDefault !== b.isDefault) return a.isDefault < b.isDefault
    if (a.isDefault && b.isDefault) return a.updatedAt < b.updatedAt
    if (!a.isDefault && !b.isDefault) return a.name > b.name
  })
}

我想这就是你需要的:

function sortPanoramas(panoramas) {
  panoramas.sort((a, b) => {
    if (a.isDefault !== b.isDefault) {
      return a.isDefault ? -1 : 1;
    }
    if (a.isDefault && b.isDefault) {
      return a.updatedAt > b.updatedAt ? -1 : a.updatedAt < b.updatedAt ? 1 : 0;
    }
    return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
  });
}
功能sortPanoramas(全景){
全景。排序((a,b)=>{
如果(a.isDefault!==b.isDefault){
返回a.isDefault?-1:1;
}
if(a.isDefault和b.isDefault){
返回a.updatedAt>b.updatedAt?-1:a.updatedAtb.name?1:0;
});
}

我想这就是您需要的:

function sortPanoramas(panoramas) {
  panoramas.sort((a, b) => {
    if (a.isDefault !== b.isDefault) {
      return a.isDefault ? -1 : 1;
    }
    if (a.isDefault && b.isDefault) {
      return a.updatedAt > b.updatedAt ? -1 : a.updatedAt < b.updatedAt ? 1 : 0;
    }
    return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
  });
}
功能sortPanoramas(全景){
全景。排序((a,b)=>{
如果(a.isDefault!==b.isDefault){
返回a.isDefault?-1:1;
}
if(a.isDefault和b.isDefault){
返回a.updatedAt>b.updatedAt?-1:a.updatedAtb.name?1:0;
});
}

您需要根据布尔条件返回正数或负数

function sortPanoramas (panoramas) {
  var mapping = { true:1, false : -1} //example mapping
  panoramas.sort((a, b) => {
    if (a.isDefault !== b.isDefault) return mapping[a.isDefault < b.isDefault]

  })
}
功能sortPanoramas(全景){
var-mapping={true:1,false:-1}//示例映射
全景。排序((a,b)=>{
if(a.isDefault!==b.isDefault)返回映射[a.isDefault
您需要根据布尔条件返回正数或负数

function sortPanoramas (panoramas) {
  var mapping = { true:1, false : -1} //example mapping
  panoramas.sort((a, b) => {
    if (a.isDefault !== b.isDefault) return mapping[a.isDefault < b.isDefault]

  })
}
功能sortPanoramas(全景){
var-mapping={true:1,false:-1}//示例映射
全景。排序((a,b)=>{
if(a.isDefault!==b.isDefault)返回映射[a.isDefault
您可以将条件链接起来

功能sortPanoramas(全景){
全景。排序((a,b)=>!a.isDefault-!b.isDefault||
a、 isDefault和&b.updatedAt.localeCompare(a.updatedAt)||
a、 name.localeCompare(b.name));
}
var数据=[{“id”:“eHyt1TYcBN”,“名称”:“a03”,“更新日期”:“2016-08-24T06:21:47.404Z”,“isDefault”:false,“index”:2},{“id”:“VGXXNcBMcH”,“名称”:“a05”,“更新日期”:“2016-08-24T06:27:12.934Z”,“isDefault”:false,“index”:4},“id”:“jUTmyn2TDR”,“名称”:“a04”,“更新日期”:“2016-08-24T06:26:29.591Z”,“isDefault”:false”,index},{“id”:“CbU2Z5BZ9w”,“name”:“a01”,“updatedAt”:“2016-08-24T06:20:47.972Z”,“isDefault”:true,“index”:0},{“id”:“RdT5CvGLRg”,“name”:“a02”,“updatedAt”:“2016-08-24T06:21:22.126Z”,“isDefault”:false,“index”:1},];
sortPanoramas(数据);

console.log(数据);
您可以将条件链接起来

功能sortPanoramas(全景){
全景。排序((a,b)=>!a.isDefault-!b.isDefault||
a、 isDefault和&b.updatedAt.localeCompare(a.updatedAt)||
a、 name.localeCompare(b.name));
}
var数据=[{“id”:“eHyt1TYcBN”,“名称”:“a03”,“更新日期”:“2016-08-24T06:21:47.404Z”,“isDefault”:false,“index”:2},{“id”:“VGXXNcBMcH”,“名称”:“a05”,“更新日期”:“2016-08-24T06:27:12.934Z”,“isDefault”:false,“index”:4},“id”:“jUTmyn2TDR”,“名称”:“a04”,“更新日期”:“2016-08-24T06:26:29.591Z”,“isDefault”:false”,index},{“id”:“CbU2Z5BZ9w”,“name”:“a01”,“updatedAt”:“2016-08-24T06:20:47.972Z”,“isDefault”:true,“index”:0},{“id”:“RdT5CvGLRg”,“name”:“a02”,“updatedAt”:“2016-08-24T06:21:22.126Z”,“isDefault”:false,“index”:1},];
sortPanoramas(数据);

console.log(数据);
在您的逻辑中,您可以声明

1) 如果isDefault===true和isDefault===false,则前者将失效 首先

2) 如果isDefault===真且isDefault==真,则按updatedAt排序 以下降的方式

3) 如果isDefault===false和isDefault===false,请在中按名称排序 上升趋势

但是,如果这些都不匹配,即当a.isDefault==false和b.isDefault==true时,您希望发生什么?不应该进行排序

如果是这样,那么这可能是一个解决方案

function sortPanoramas(panoramas) {
  panoramas.sort((a, b) => {
    if (a.isDefault) {
      return b.isDefault ? a.updatedAt.localeCompare(b.updateAt) : -1;
    }
    return b.isDefault ? 0 : a.name.localeCompare(b.name);
  })
}

也许你可以澄清一下逻辑?

在你的逻辑中,你说

1) 如果isDefault===true和isDefault===false,则前者将失效 首先

2) 如果isDefault===真且isDefault==真,则按updatedAt排序 以下降的方式

3) 如果isDefault===false和isDefault===false,请在中按名称排序 上升趋势

但是,如果这些都不匹配,即当a.isDefault==false和b.isDefault==true时,您希望发生什么?不应该进行排序

如果是这样,那么这可能是一个解决方案

function sortPanoramas(panoramas) {
  panoramas.sort((a, b) => {
    if (a.isDefault) {
      return b.isDefault ? a.updatedAt.localeCompare(b.updateAt) : -1;
    }
    return b.isDefault ? 0 : a.name.localeCompare(b.name);
  })
}

也许你可以澄清一下逻辑?

看看@Nina Scholz好的,我添加了一些数据。看看@Nina Scholz好的,我添加了一些数据。一点解释,即使只是代码中的注释,也会大大改进答案。一点解释,即使只是代码中的注释,也会大大改进答案。