Javascript 自定义对象排序数组

Javascript 自定义对象排序数组,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我有一个这样的对象数组,例如: [ { id: '-1' }, { id: '10' }, { id: '1234' }, { id: '1235' }, { id: '-1' } ] 我想对这个数组进行排序,以便按从最小到最大的id进行排序,但是我想将id为'-1'的对象发送到数组的后面。所以我试了一下: 常量arr=[{id:'-1'},{id:'-10'},{id:'1234'},{id:'1235'},{id:'-1'}] arr.sorta,

我有一个这样的对象数组,例如:

[ {
    id: '-1'
},
{
    id: '10'
},
{
    id: '1234'
},
{
    id: '1235'
},
{
    id: '-1'
} ]
我想对这个数组进行排序,以便按从最小到最大的id进行排序,但是我想将id为'-1'的对象发送到数组的后面。所以我试了一下:

常量arr=[{id:'-1'},{id:'-10'},{id:'1234'},{id:'1235'},{id:'-1'}] arr.sorta,b=>{ 如果parseInta.id==-1 | | parseIntb.id==-1返回1; 如果parseInta.id-parseIntb.id返回-1; };
console.logarr 您可以在函数中检查应排序到底部的项目

var数组=[{id:'-1'},{id:'-10'},{id:'1234'},{id:'1235'},{id:'-1'}]; array.sorta,b=>a.id=='-1'-b.id==='-1'| | a.id-b.id; console.logarray; .as控制台包装{最大高度:100%!重要;顶部:0;}排序工作原理 首先,让我们看看什么。排序期望你给它。

给定参数a,b-我们应该返回

如果a如果a>b,则为0 你是怎么分类的 让我们看一下你的第一行

if (parseInt(a.id) === -1 || parseInt(b.id) === -1) return 1;
-1表示a更小。但这可能不是真的。可能是a不是b是-1,而且更大,但我们总是告诉JavaScript将a发送到后面,而这正是我们应该对b做的

相反,当b为-1时,我们希望返回-1,但当a为-1时,我们希望返回+1。如果他们都是-1,我们返回什么并不重要

在JavaScript中,除0之外的任何数字都是真实的。让我们看看下一行。

if (parseInt(a.id) - parseInt(b.id)) return -1;
如果a-b为0,则在此回调中不返回任何内容。如果不是0,我们总是说a 请注意,我们从不说b 如何正确排序 获取ID 是a还是b-1? 哪个更大,a还是b 如果你假设a和b不是-1,那么我们可以简单地减去a-b。为什么?如果a大于b,那么减法将产生一个正数,表示b
return aID - bID
全部 常量arr=[{id:'-1'},{id:'-10'},{id:'1234'},{id:'1235'},{id:'-1'}] arr.sorta,b=>{ const[aID,bID]=[parseInta.id,parseIntb.id] ifaID==-1返回+1 ifbID==-1返回-1 返回援助-投标 };
console.logarr;为什么你不能按升序排序而不用担心-1呢。所有其他数字似乎都大于0,因此-1自然是最小的,并聚集在数组的开始处@Max我或多或少地使用它来对数据进行排序和显示。我不想明确地将最小值排序为最大值,所以我没有这样做。啊,我还把数组的后面读为“乞讨”而不是“结束”。非常感谢Max提供了详细的答案!从中学到很多:谢谢!我想我应该补充一些关于旧的公认答案的信息,以防你觉得有用。
if(aID === -1) return +1;
if(bID === -1) return -1;
return aID - bID