function getPrev(list, cur) {
const curId = cur.id
let maxId = Number.MIN_SAFE_INTEGER // -9007199254740991
let maxItem = null;
let index = -1
for (let i = 0; i < list.length; i++) {
const item = list[i]
const itemId = item.id
if (itemId < curId) {
maxId = Math.max(maxId, itemId)
if(maxId == itemId){
maxItem = item;
index = i
}
}
}
return {
index,
item: maxItem
}
}
function getNext(list, cur) {
const curId = cur.id
let minId = Number.MAX_SAFE_INTEGER // 9007199254740991
let minItem = null;
let index = -1
for (let i = 0; i < list.length; i++) {
const item = list[i]
const itemId = item.id
if (itemId > curId) {
minId = Math.min(minId, itemId)
if (minId == itemId) {
minItem = item
index = i
}
}
}
return {
index,
item: minItem
}
}
[{
id: 10
},
{
id: 3
}, {
id: 5
}]
function getPrev(list, cur) {
const index = list.findIndex(item => item.id == cur.id)
if (index < 0) {
throw new Error('not found')
}
if (index <= 0) {
return -1;
}
return index - 1
}
function getNext(list, cur) {
const index = list.findIndex(item => item.id == cur.id)
if (index < 0) {
throw new Error('not found')
}
if (index >= list.length - 1) {
return -1;
}
return index + 1
}
const list = [
{ id: 1, title: '所有' },
{ id: 2, title: 'S' },
{ id: 3, title: 'A' },
{ id: 5, title: 'B' },
{ id: 5, title: 'C' },
{ id: 6, title: 'D' },
{ id: 7, title: 'F' }
]
console.log(getPrev(list, {
id: 1
}))
// 获取当前 id = 8 的下一个
console.log(getNext(list, {
id: 8
}))