亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何根據 url ID 映射元素?

如何根據 url ID 映射元素?

侃侃無極 2023-05-11 15:55:54
假設我有一組看起來像的對象[{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,...}]現在,到我的組件的鏈接基于這些值,假設我選擇了第一個迷你游戲,我被路由到 localhost/minigame1/7該鏈接有效,盡管我只是想出了一個臨時解決方案,以實際獲取特定的、選定的迷你游戲數據。if (taskData !== '') {    minigameData = taskData      .filter(t => t.type === 'minigame1')      .map(el => {        questionsData = el;      });  }這雖然忽略了 id 并且只為它可以找到的第一個游戲(id 7)提取數據,即使我選擇了 id 8 的游戲。所以我嘗試使用 good ollet { id } = useParams();我的問題是,我不確定如何讓它通過 id 和游戲類型過濾游戲數據。我試過添加另一個.filter(t => t.details.id === id) 在第一個之后,但它只會導致我的數據根本無法加載,無論鏈接 ID 是什么。我剛剛花了很多時間試圖找出一個解決方案,但我的想法已經用完了。將不勝感激任何建議!
查看完整描述

1 回答

?
DIEA

TA貢獻1820條經驗 獲得超2個贊

.filter返回符合條件的所有元素的數組。但是,當您確實需要匹配typeAND時,您只使用 1 個字段details.id。您需要做的就是將第二個條件添加到您的退貨聲明中。


但是,對于您的用例,我認為這.find將是一個更好的選擇。它沒有返回所有選擇的數組,而是只返回它找到的第一個(因為 minigame + id 應該是唯一的,對吧?),所以我在下面更新了你的邏輯。


if (taskData !== '') {

    minigameData = taskData

      .find(t => t.type === 'minigame1' && t.details.id === id);

  }

最后,我.map最后刪除了你的,因為它什么也沒做。你最后沒有返回值,所以我不確定最終結果會是什么。


如果t.details.id不匹配任何東西,我會檢查你params返回的是什么。


查看完整回答
反對 回復 2023-05-11
  • 1 回答
  • 0 關注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號