javascript - 如何创建具有键值的数组并设置新状态?

标签 javascript arrays reactjs react-hooks

我有一个状态。这是一个空数组。

在 componentDidMount 上,我从 API 获取值,此操作使用如下数组设置新状态:

 [
   435235324: { data: ... },
   456565767: { data: ... }
 ]

每个数字都是一个 id。

我有每个id中新数据的websocket,所以我需要更新数组项的数据值。

我的搜索功能是:

const setNewValueToState = (id, data) => {
    const exist = widgetValues[id];
    console.log(exist)
    if(!exist){
      setWidgetValues(oldValues => [...oldValues, oldValues.id = data ])
    }
  } 

我需要检查 id 是否存在于数组中,如果不存在,则“推送它”。

但是这不起作用。它返回一个无限数组,如下所示:

[
 { data: ... },
 { data: ... }
]

没有键的数组:/

最佳答案

 [
   435235324: { data: ... },
   456565767: { data: ... }
 ]

不是一个有效的数组结构,正如其他评论所说,你应该使用对象数组

[ 
   { 
      "id":123456,
      "data":{ 
         ....
      }
   },
   { 
      "id":1234567,
      "data":{ 
         ....
      }
   },
]

或者使用一个对象

{
     123:{
         data:{}
     },
     1234:{
         data:{}
     },

}

关于javascript - 如何创建具有键值的数组并设置新状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59299480/

相关文章:

javascript - HTML 表单按钮无法正常工作

javascript - 如何在 x 轴上显示月份和年份,并在 Highcharts 中显示为数字?

javascript - 对数据进行排序并在 UI 上渲染无法使用 React hooks

javascript - 在数据表ajax调用成功时调用一个函数

javascript - 如果字段为空,.serialize() 不在帖子中显示输入名称

python - NumPy 中 astype 的有效参数

java - 在 Java 中从数组生成对数正态分布

python - 在Python中查找数组中不交叉的对并迭代删除,直到没有剩余对

reactjs - React - 将组件作为参数传递给另一个组件

android - React-Native Packager 不检测 Windows 上的文件更改