侃侃無極
2023-05-11 15:55:54
假設(shè)我有一組看起來像的對(duì)象[{details: {id: 7},type: minigame1,...(blabla some other values that i'll have to access later)},{details: {id: 8},type: minigame1,...(blabla some other values that i'll have to access later)},{details: {id: 10},type: minigame2,...}]現(xiàn)在,到我的組件的鏈接基于這些值,假設(shè)我選擇了第一個(gè)迷你游戲,我被路由到 localhost/minigame1/7該鏈接有效,盡管我只是想出了一個(gè)臨時(shí)解決方案,以實(shí)際獲取特定的、選定的迷你游戲數(shù)據(jù)。if (taskData !== '') { minigameData = taskData .filter(t => t.type === 'minigame1') .map(el => { questionsData = el; }); }這雖然忽略了 id 并且只為它可以找到的第一個(gè)游戲(id 7)提取數(shù)據(jù),即使我選擇了 id 8 的游戲。所以我嘗試使用 good ollet { id } = useParams();我的問題是,我不確定如何讓它通過 id 和游戲類型過濾游戲數(shù)據(jù)。我試過添加另一個(gè).filter(t => t.details.id === id) 在第一個(gè)之后,但它只會(huì)導(dǎo)致我的數(shù)據(jù)根本無法加載,無論鏈接 ID 是什么。我剛剛花了很多時(shí)間試圖找出一個(gè)解決方案,但我的想法已經(jīng)用完了。將不勝感激任何建議!
1 回答

DIEA
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊
.filter返回符合條件的所有元素的數(shù)組。但是,當(dāng)您確實(shí)需要匹配typeAND時(shí),您只使用 1 個(gè)字段details.id。您需要做的就是將第二個(gè)條件添加到您的退貨聲明中。
但是,對(duì)于您的用例,我認(rèn)為這.find將是一個(gè)更好的選擇。它沒有返回所有選擇的數(shù)組,而是只返回它找到的第一個(gè)(因?yàn)?minigame + id 應(yīng)該是唯一的,對(duì)吧?),所以我在下面更新了你的邏輯。
if (taskData !== '') {
minigameData = taskData
.find(t => t.type === 'minigame1' && t.details.id === id);
}
最后,我.map最后刪除了你的,因?yàn)樗裁匆矝]做。你最后沒有返回值,所以我不確定最終結(jié)果會(huì)是什么。
如果t.details.id不匹配任何東西,我會(huì)檢查你params返回的是什么。
添加回答
舉報(bào)
0/150
提交
取消