为了账号安全,请及时绑定邮箱和手机立即绑定

将对象数组转换为另一个对象数组?

将对象数组转换为另一个对象数组?

jeck猫 2022-05-26 17:43:20
我一直在寻找类似的问题,但我发现的问题都没有真正符合我的问题......编辑:整个想法是开发一个可重复使用的下拉组件,我将项目直接通过道具传递。这些项目必须是具有键(用于字段值)和显示属性(用于值文本)的对象。为了进行转换,我使用了itemify函数。所有这些代码都存在于包含下拉列表的表单组件中。问题是这样的:我有一组从服务器获取的对象。目标是保留这个对象数组(“旧对象”)并创建另一个对象(“新对象”)。这个新数组应该包含从第一个数组转换而来的新对象,但是:newObject.key = oldObject.somePropertynewObject.display=oldObject.someOtherProperty为了进行这种转换,我创建了“itemify”函数。现在,实际结果。首先,我从服务器获取数据然后我通过转换获取 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 关注
  • 209 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信