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

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

可以訪問數組的特定位置,但無法訪問此數組中的特定對象

可以訪問數組的特定位置,但無法訪問此數組中的特定對象

慕標5832272 2022-08-18 15:44:53
我遇到了一個問題,正如標題本身所說的那樣。我可以訪問數組的特定位置,但無法訪問此數組中的特定對象。export const getAccessLevel = id =>{          const accessLevels = [        {id: 0, name: 'Admin'},        {id: 1, name: 'Customer'},        {id: 2, name: 'Client'},        {id: 3, name: 'Viewer'}    ]    let index = accessLevels.findIndex(array => array.id === id);    console.log(index) // result : 3    console.log(accessLevels[index])     // this is returning {id: 3, name: "Viewer"}    let AccessLevelName = accessLevels[index].name    // this is return error : Cannot read property 'name' of undefined    return AccessLevelName}
查看完整描述

2 回答

?
撒科打諢

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

在這個例子中,似乎正在工作,但我建議你使用.find(),這樣你就可以在一次調用中擁有對象,而不是從索引中獲取它。就像


const getAccessLevel = id => {

    const accessLevels = [

      { id: 0, name: "Admin" },

      { id: 1, name: "Customer" },

      { id: 2, name: "Client" },

      { id: 3, name: "Viewer" }

    ];


    let accessLevel = accessLevels.find(array => array.id === id);

    console.log(accessLevel);


    let AccessLevelName = accessLevel.name;


    return AccessLevelName;

  };


查看完整回答
反對 回復 2022-08-18
?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

我發現了問題!這是因為反應渲染順序而發生...因為第一次調用此函數 id 時未定義。


它在這里得到了錯誤:


let AccessLevelName = accessLevels[index].name

我所做的修復是使用Effect鉤子。當操作(redux)函數更改具有id值的數據值時,它會再次執行getAccessLevel,但定義了id!


獲取訪問級別 :


export const getAccessLevel = id => {


    console.log(id)



    const accessLevels = [

        { id: 0, name: "Admin" },

        { id: 1, name: "Customer" },

        { id: 2, name: "Client" },

        { id: 3, name: "Viewer" }

    ];


    let accessLevel = accessLevels.find(array => array.id === id);

    console.log(accessLevel);


    let AccessLevelName = ''


    if (id) {

        AccessLevelName = accessLevel.name

    }


    return AccessLevelName;


}

用途效果 :


 useEffect(() => {

        props.findGroup(id)

    }, [])


    const handleAccessLevel = () =>{

        setAccessLevelName(getAccessLevel(props.data.accessLevel))

    }


    useEffect(() => {

        handleAccessLevel()

      }, [props.data])


查看完整回答
反對 回復 2022-08-18
  • 2 回答
  • 0 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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