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

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

將對象數組轉換為另一個對象數組?

將對象數組轉換為另一個對象數組?

jeck貓 2022-05-26 17:43:20
我一直在尋找類似的問題,但我發現的問題都沒有真正符合我的問題......編輯:整個想法是開發一個可重復使用的下拉組件,我將項目直接通過道具傳遞。這些項目必須是具有鍵(用于字段值)和顯示屬性(用于值文本)的對象。為了進行轉換,我使用了itemify函數。所有這些代碼都存在于包含下拉列表的表單組件中。問題是這樣的:我有一組從服務器獲取的對象。目標是保留這個對象數組(“舊對象”)并創建另一個對象(“新對象”)。這個新數組應該包含從第一個數組轉換而來的新對象,但是:newObject.key = oldObject.somePropertynewObject.display=oldObject.someOtherProperty為了進行這種轉換,我創建了“itemify”函數?,F在,實際結果。首先,我從服務器獲取數據然后我通過轉換獲取 API 獲得的數組來創建另一個數組。getProfiles = async () => {    const result = await fetch(apiConfig.profilesAPI);    const body = await result.json();    if (body.data.length>0){                    let temp = body.data;        console.log(temp);        let buffer = body.data.map(x=>itemify(x,"id","desc"));          this.setState((state,props)=>({            profiles: body.data,            profileItems: buffer        }));    }}編輯:這是我的全部itemify功能function itemify(obj,id,display) {    let retVal = {        key: obj[id],        display: obj[display]    }    console.log("obj: "+obj);    console.log("retVal: "+retVal);    return retVal;    // return {key:obj[id],display:obj[display]} //prior version had only this line}如果我去檢查控制臺,我有這個:第一個日志來自第一個代碼片段console.log(temp);如果您需要更多代碼,請告訴我。這部分代碼還沒有在 github 上。
查看完整描述

1 回答

?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

問題解決了!

正如我解釋的那樣,我試圖將一個下拉列表呈現到一個父組件中,它是一個表單。最終結果是下拉列表為空。

首先,我意識到我在登錄控制臺的方式上犯了一個錯誤。錯誤的方法:

console.log("object " + object);

正確方法:

console.log("object",object);

我以為我在轉換對象時做錯了什么。畢竟一切都是正確的,連同對象和轉換。

我發現我在管理狀態和道具之間遇到了一些混淆。

我正在將從表單發送的道具加載到子組件(下拉列表)的狀態 - 我現在意識到這可能沒有多大意義。

我在哪里使用項目渲染數組

this.state.items.map(x=>renderItems(x))

我替換為

this.props.items.map(x=>renderItems(x))

現在它可以工作了!畢竟,為什么要把它管理到 state...props 就足夠了。學習到教訓了!


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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