我沒有找到任何解決方案。到處只顯示陣列的第一個和最后一個元素。
假設,我有一個陣列
[
{ name: "Hero", Id: "hero" },
{ name: "About", Id: "about" },
{ name: "Proccess", Id: "process" },
{ name: "Mission", Id: "mission" },
{ name: "Skill", Id: "skill" },
{ name: "Service", Id: "service" },
{ name: "Work", Id: "work" },
{ name: "Contact", Id: "contact" },
]
這里每個物件都有一個Id。假設 active Id 是service。當我激活 Id 時service,我必須找到它的上一個和下一個 Id(上一個skill,下一個work)。在這里,我必須根據活動 ID 找到上一個和下一個物件。此處 Active Id 可以更改。當 Active Id 更改時,我必須找到上一個和下一個物件 id 的更改。
我想我可以澄清這個問題。對我來說很難。請幫我。
uj5u.com熱心網友回復:
您可以使用array.findIndex獲取當前索引,然后-和 那得到一個和下一個分別。您還需要考慮越界索引。undefined如果索引超出范圍,我擁有的函式將回傳。
const arr = [
{ name: "Hero", Id: "hero" },
{ name: "About", Id: "about" },
{ name: "Proccess", Id: "process" },
{ name: "Mission", Id: "mission" },
{ name: "Skill", Id: "skill" },
{ name: "Service", Id: "service" },
{ name: "Work", Id: "work" },
{ name: "Contact", Id: "contact" },
]
const getPrevAndNext = (activeID) => {
const index = arr.findIndex((a) => a.Id === activeID)
if (index === -1) {
return undefined
}
const prev = arr[index - 1]
if (!prev) {
return undefined
}
const next = arr[index 1]
if (!next) {
return undefined
}
return [prev, next]
}
console.log(getPrevAndNext('service'))
uj5u.com熱心網友回復:
您可以使用老式 for 回圈遍歷陣列并檢查是否Id匹配然后獲取當前index并添加-1到 getprev并添加 1到 get next。如下圖所示。
let array = [
{ name: "Hero", Id: "hero" },
{ name: "About", Id: "about" },
{ name: "Proccess", Id: "process" },
{ name: "Mission", Id: "mission" },
{ name: "Skill", Id: "skill" },
{ name: "Service", Id: "service" },
{ name: "Work", Id: "work" },
{ name: "Contact", Id: "contact" },
];
for(let i = 0; i < array.length; i ){
if(array[i].Id === 'service'){
console.log('prev = ' array[i-1].Id ' next = ' array[i 1].Id);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/402025.html
標籤:javascript 数组
