javascript - 自定义排序对象数组

标签 javascript arrays javascript-objects

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

[ {
    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/

相关文章:

javascript - 将数组中的所有键值推送到新数组中,只要不同键的值(在同一对象中)满足特定条件

javascript - 如何在 CSS 中嵌入 Javascript?

javascript - 无法将值插入数组

javascript - 使用 jQuery 对 DOM 元素进行排序以对数组进行排序

javascript - 对对象数组进行排序以消除重复条目

javascript - 如何排序升序降序?

javascript - 如何在删除字段时计算输入字段值并将其分配给另一个字段

javascript - 如何在自定义 react 钩子(Hook)中获取当前 react 组件名称?

android - 如何更新 Firestore 中 map 数组中的元素?