数组对象怎么根据条件进行排序

需求是,数组一第个元素对象的id不可以为0,如果是,则当前对象索引下标往后移,不为0则不作操作,请问要怎么做,可以写个demo给愚弟不,感谢

list:[
    {
        id:0,
        name:'a'
    },
    {
        id:1,
        name:'b'
    },
    {
        id:2,
        name:'c'
    }
]
阅读 3k
5 个回答

是不是可以理解为,找到数组中第一个id不为0的元素,将这个元素从数组删除,然后再将它追加到数组最前面?
这个你会吧~

if(list&&list[0].id == 0){
    list.unshift(null)
}

一看标题,还以为要来个冒泡来着\\

 let   list=[
    {
        id:0,
        name:'a'
    },
    {
        id:1,
        name:'b'
    },
    {
        id:2,
        name:'c'
    }
]
   console.log(list.sort(function (a, b) {
    if (a.id > b.id) {
        return -1;
    } else if (a.id == b.id) {
        return 0;
    } else {
        return 1;
    }
}))

这个意思?好吧理解错了..........

function test(arr){
    if(arr.length >1&&arr[0].id == 0){
       arr[1] = arr.splice(0,1,arr[1])[0]
       //补充:还可以使用es6
       //[arr[0],arr[1]] = [arr[1],arr[0]] 
    }
    return arr 
}
console.log( test(list));
//[{ id: 1, name: "b" }, { id: 0, name: "a" }, { id: 2, name: "c" }]

你的意思没有说清楚啊,你给的例子之给了调整前的数据,没有给期望的数据。如果期望

list:[
    {
        id:1,
        name:'b'
    },
    {
        id:0,
        name:'a'
    },
    {
        id:2,
        name:'c'
    }
]

则也有一些其它需要确认的情况:
比如 如果只有id:0的元素怎么处理?
如果不讨论这些,则这个是判断第一个元素id为0,则和下一个元素互换位置吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题