我有这个目标:

{
  "data": {
    "success": true,
    "historical": true,
    "date": "2022-01-01",
    "base": "MXN",
    "rates": {
      "COFFEE": 0.02158734144632395,
      "CORN": 0.008232645172711363,
      "COTTON": 0.04320921676820366,
      "SOYBEAN": 0.0036714622235960175,
      "SUGAR": 0.25680398615582695,
      "WHEAT": 0.00017592643558262669
    },
    "unit": "per bushel"
  }
}  

And I want to iterate over "rates" to replace the values of each key with 1 / value
I tried with: (prueba is the Object name)

Object.values(this.prueba.data.rates).forEach((val) => {
      console.log(val)
      val = 1 / val;
      console.log(val)
    })

但是如何替换这些值,或者如何将它们保存在另一个数组或对象中

推荐答案

您的代码无法工作,因为您对val所做的更改只反映在回调的范围内.

相反,您应该遍历每个属性并设置其值.

const obj={data:{success:!0,historical:!0,date:"2022-01-01",base:"MXN",rates:{COFFEE:.02158734144632395,CORN:.008232645172711363,COTTON:.04320921676820366,SOYBEAN:.0036714622235960175,SUGAR:.25680398615582695,WHEAT:.00017592643558262669},unit:"per bushel"}};

let r = obj.data.rates;
Object.keys(r).forEach(e => r[e] = 1 / r[e])
console.log(obj)

如果您使用的是Typescript,则有必要这样声明对象:

const obj: {[key: string]: any} = ...

Javascript相关问答推荐

如何在不分配整个数组的情况下修改包含数组的行为主体?

如何将连续的十六进制字符串拆分为以空间分隔的十六进制块,每个十六进制块包含32个二元组?

如何在RTK上设置轮询,每24小时

Cookie中未保存会话数据

使搜索栏更改语言

为什么这个JS模块在TypeScript中使用默认属性导入?""

在网页上添加谷歌亵渎词

单击ImageListItemBar的IconButton后,在Material—UI对话框中显示图像

如何从调整大小/zoom 的SVG路径定义新的d属性?""

从页面到应用程序(NextJS):REST.STATUS不是一个函数

OpenAI转录API错误请求

Vaadin定制组件-保持对javascrip变量的访问

如何在FastAPI中为通过file:/URL加载的本地HTML文件启用CORS?

从逗号和破折号分隔的给定字符串中查找所有有效的星期几

如何在Java脚本中对列表中的特定元素进行排序?

通过跳过某些元素的对象进行映射

固定动态、self 调整的优先级队列

使用静态函数保存 node 前的钩子

如何在css中裁剪成一定Angular 的圆的一部分,而不需要复杂的多边形

ReactJS扫描线演示:多个曲面未同时更新的问题