我有一个对象数组,例如:
[ {
id: '-1'
},
{
id: '10'
},
{
id: '1234'
},
{
id: '1235'
},
{
id: '-1'
} ]
我想对此数组进行排序,以便按 id 升序(从小到大)排序,但是我希望将 id 为“-1”的对象发送到数组的后面。所以我尝试了这个:
const arr = [ { id: '-1' }, { id: '10'}, { id: '1234' }, { id: '1235' }, { id: '-1' } ]
arr.sort((a, b) => {
if (parseInt(a.id) === -1 || parseInt(b.id) === -1) return 1;
if (parseInt(a.id) - parseInt(b.id)) return -1;
});
console.log(arr);
正如您从上面的代码片段中看到的,它成功地对它们进行升序排序,但是它没有成功地将带有“-1”的 id 移动到数组的后面。
为什么会发生这种情况?我做错了什么?
最佳答案
您可以使用该函数来检查应排序到底部的项目。
var array = [{ id: '-1' }, { id: '10' }, { id: '1234' }, { id: '1235' }, { id: '-1' }];
array.sort((a, b) => (a.id === '-1') - (b.id === '-1') || a.id - b.id);
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 自定义排序对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51463781/