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

Reducer 函数无法在 reducer 对象中创建键值对

Reducer 函数无法在 reducer 对象中创建键值对

呼啦一阵风 2021-06-29 17:55:00
我调用 RSS 提要并使用解析器对其进行解析。我收到一个数组。我现在想最终创建一个对象,如下所示:{  "2019-06-13": {    "rates": {      "usd": "1.1289",      "jpy": "122.44",      "gbp": "0.88948",      "chf": "1.1207"    },    "date": "2019-06-13"  }}该.reduce功能目前看起来像这样。当我尝试设置日期时收到错误消息:rateJson = rateArray.reduce((acc, curr) => {                    let currObj =                        curr['cb:statistics'][0]['cb:exchangeRate'][0];                    let currCurrency = currObj['cb:targetCurrency'][0].toLowerCase();                    let currDate =                        currObj['cb:observationPeriod'][0]['cb:period'][0];                    let currRate = {                        rate: currObj['cb:observation'][0]['cb:value'][0],                        mult: currObj['cb:observation'][0]['cb:unit_mult'][0]                    };                    console.log(currDate,currCurrency,currRate, acc)                    acc[currDate]['date'] = currDate;                    acc[currDate]['rates'][currCurrency] = currRate;                    return acc;                }, {});错误信息: TypeError: Cannot set property 'date' of undefined该console.log()语句给了我四个未定义的值,即正确的和预期的值。
查看完整描述

1 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

您需要先创建一个对象,然后才能为其赋值:


acc[currDate] = acc[currDate] || {};

acc[currDate].date = currDate;

acc[currDate].rates = acc[currDate].rates || {};

acc[currDate].rates[currCurrency] = currRate;

该obj = obj || {}模式只是“如果尚不存在则创建并分配新对象”的简写。


查看完整回答
反对 回复 2021-07-01
  • 1 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

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