a1chemy 发表于 2022-7-14 00:29

后台返回json数据处理问题(js react antdpro)

各位大佬,我是新入门的前端萌新,目前有个项目在基于ant design pro(ts react)开发一个系统,目前遇到了一个问题。服务器返回的数据如下:
[*]
data: [{planFinish: "2022-09-29", planId: "2", planName: "2022年中学招生", planStart: "2022-06-01",…},…]
0: {planFinish: "2022-09-29", planId: "2", planName: "2022年中学招生", planStart: "2022-06-01",…}
1: {planFinish: "2022-09-29", planId: "3", planName: "2022年小学招生", planStart: "2022-06-01",…}
2: {planFinish: "2022-09-29", planId: "5", planName: "2022年9月小学招生", planStart: "2022-09-01",…}
3: {planFinish: "2023-03-31", planId: "6", planName: "2023年3月招生测试", planStart: "2023-03-01",…}
4: {planFinish: "2023-03-31", planId: "7", planName: "2023年4月招生测试", planStart: "2023-03-01",…}
msg: ""
我需要在选择框使用这个数据,但是格式要处理为这样的:

{
2: '2022年小学招生',
3: '2022年9月小学招生',
5: '2022年9月小学招生',
6: '2023年3月招生测试',
7: '2023年4月招生测试',
};
请各位大佬帮忙看看如何解决,小弟在此谢过!

爱飞的猫 发表于 2022-7-14 00:29

本帖最后由 爱飞的猫 于 2022-7-14 03:46 编辑

```js
const data = [{
planId: 1,
planName: 'a1'
}, {
planId: 2,
planName: 'a2'
}];
const result = data.reduce((result, {
planId,
planName
}) => Object.assign(result, {
: planName
}), Object.create(null));

console.log(result); // 得到 {1: 'a1', 2: 'a2'}
```

关于 reduce 函数可以看文档:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce

a1chemy 发表于 2022-7-14 00:33

补充:antd的ProFormSelect组件中valueEnum的值要是一个对象,格式如下:
valueEnum={{
            2: '2022年小学招生',
            3: '2022年9月小学招生',
            5: '2022年9月小学招生',
            6: '2023年3月招生测试',
            7: '2023年4月招生测试',
          }}

后台返回的data是一个数组,只需要planid和planname的值。还请各位大佬帮忙写一下,包括map方法是怎么写的,越详细越好,谢谢!

q5269174 发表于 2022-7-14 07:38

学习了,感谢分享

layuai 发表于 2022-7-14 08:48

这种用vue都能解决吧{:1_904:}

cl19980429 发表于 2022-7-14 08:55

const data = [{
planId: 1,
planName: 'a1'
}, {
planId: 2,
planName: 'a2'
}];

let result = data.map((item) => {
    return {
       : item.planName
    }
})
console.log(result)

cl19980429 发表于 2022-7-14 08:56

本帖最后由 cl19980429 于 2022-7-14 11:05 编辑

const data = [{
planId: 1,
planName: 'a1'
}, {
planId: 2,
planName: 'a2'
}];

let result= {}
res.forEach((item) => {
   
      result = item.planName
   
})console.log(result)

凉柠 发表于 2022-7-14 09:37

本帖最后由 凉柠 于 2022-7-14 09:45 编辑

但凡js基础会一点都不至于这个都不会
        let res = [{
                planFinish: "2022-09-29",
                planId: "2",
                planName: "2022年中学招生",
                planStart: "2022-06-01"
        }, {
                planFinish: "2022-09-29",
                planId: "2",
                planName: "2022年中学招生",
                planStart: "2022-06-01"
        }, {
                planFinish: "2022-09-29",
                planId: "2",
                planName: "2022年中学招生",
                planStart: "2022-06-01"
        }, {
                planFinish: "2022-09-29",
                planId: "2",
                planName: "2022年中学招生",
                planStart: "2022-06-01"
        }]
        let data = []
        res.forEach((e)=>{
                data.push(e.planName)
        })
        console.log(res)
        console.log(data)
        console.log(Object.assign({}, data))

凉柠 发表于 2022-7-14 09:43

凉柠 发表于 2022-7-14 09:37
但凡会js基础会一点都不至于这个都不会
        let data = []
        res.forEach((e)=>{


补充一下如果需要对象这样写 console.log(Object.assign({}, data))转换一下就可以

xlinux 发表于 2022-7-14 09:57

留个记号,有用
页: [1] 2
查看完整版本: 后台返回json数据处理问题(js react antdpro)