如何构造一个数组以首先比较然后添加输入

2024-01-26

由于是 React 和 js 的初学者,我很难正确构建数组, 我在网上找到一篇文章,说使用concat方法可以构造一个数组。我也遵循同样的技术, 但我的问题是它附加数据并比较是否已经存在相同的数据。我想在附加到数组之前比较数据,这样就不会有重复的数据进入数组。

我当前的代码是:

const [input, setInput] = useState([]) // state

const handleOnChange = (userInput) => {
    // Add the userInput the list onChange of userInput
    // Save userInput to React Hooks
    
    setInput((input) => input.concat(userInput))
    console.log(input)
  }

这里 userInput 是一个具有多个字符串值的对象,例如

{id: 1 , ifYes: "Do this", ifNo : "Do something else"}

如果数组中有 id:1 的项目,那么再次点击它,它不应该附加到数组中。


您可以使用数组find检查数组是否有具有相同 id 的对象,如果没有,则可以添加该值

const [input, setInput] = useState([]) // state

const handleOnChange = (userInput) => {
  // Add the userInput the list onChange of userInput
  // Save userInput to React Hooks
  const hasUserInput = input.find(userVal => userVal.id === userInput.id);
  if (!hasUserInput) {
    setInput((input) => input.concat(userInput));
    console.log(input)
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何构造一个数组以首先比较然后添加输入 的相关文章

随机推荐

  • if 和 for 循环包含在 while 循环 VBA 中

    我正在尝试编写一些代码 循环在一个列中抛出一列数据 并将其与同一工作表中另一列中的数据进行匹配 当两个数据点匹配时 相应的数据将被复制到第一个数据点旁边 最简单的表达方式是我在 while 循环内的 for Staten 内有一个 if 语
  • 用于通过电子邮件发送活动电子表格的 Google Apps 脚本

    我在网上找到了一个脚本 它可以获取当前工作表 将其复制到临时的新电子表格中 将其转换为 PDF 并通过电子邮件发送 我能够让它工作 但尝试将其设置为仅发送特定范围 尝试了一下 但无论如何我都不是一个好的编码员 或者 我也有兴趣弄清楚如何让它
  • CGIHTTPRequestHandler 在 python 中运行 php 或 python 脚本

    我正在 Windows 上编写一个简单的 python Web 服务器 它可以工作 但现在我想运行动态脚本 php 或 py 而不仅仅是 html 页面 这是我的代码 from BaseHTTPServer import HTTPServe
  • Oracle数据库连接超时设置

    如果一段时间不活动 与 Oracle 数据库的连接会被断开 这会导致错误 gt end of file on communication channel 客户端计算机上是否有任何 Oracle 设置 sqlnet ora 或某种环境变量 可
  • 绑定和连接之间有什么关系?

    我的印象是 gt gt 由 Haskell 使用 和join 数学家更喜欢 是 相等的 因为一个可以用另一个来写 import Control Monad join join x x gt gt id x gt gt f join fmap
  • 是否值得对数据库中的电子邮件地址进行加密?

    我已经在使用了加盐哈希 http www matasano com log 958 enough with the rainbow tables what you need to know about secure password sch
  • 用vb6实现多线程

    我的任务是通过连接到电脑的多个串行端口实现自动化过程 我如何使用 vb6 实现多线程 以通过附加的串行端口独立执行一些自动化任务 提前致谢 不 vb6 不支持多线程 它通过破解 winapi 在 vb5 中工作 但在 vb6 中完全被破坏
  • JSF不支持跨域验证,有解决方法吗?

    JSF 2 0 只允许您验证一个字段上的输入 例如检查它是否具有特定长度 它不允许您有一个表格 其中显示 输入城市和州 或仅输入邮政编码 你是怎么解决这个问题的 我只对涉及 JSF 验证阶段的答案感兴趣 我对将验证逻辑放入托管 Bean 不
  • 交叉验证 SPARK 期间的自定义评估器

    我的目标是向 CrossValidator 函数 PySpark 添加基于排名的评估器 cvExplicit CrossValidator estimator cvSet numFolds 8 estimatorParamMaps para
  • Angular 2子路由会刷新父路由吗

    我有一个应用程序 在某些情况下 我在父路线的子路线之间进行路线 一个看起来像example com a 1 其他example com a 2 将从切换1 to 2触发页面的重新加载 渲染a 就像播放视频一样a并且有一个与该视频同级的路线出
  • equals 和 hashCode 的通用反射辅助方法

    我正在考虑为 equals 和 hashCode 创建一个反射辅助方法 在 equals 的情况下 辅助方法会通过反射 API 查找 objectA 的字段 并将它们与 objectB 的字段进行比较 对于 hashCode 辅助方法会检查
  • Common Lisp 中的 comma-comma-at

    我对 comma comma at 的作用感到困惑 使用 comma comma at 的示例如下定义 Lisp 宏时是否需要使用双引号 双逗号 https stackoverflow com questions 17938242 is t
  • 注册DLL时出错

    我正在尝试使用命令 regsvr32 dll name dll 注册 DLL 但出现以下错误 模块 Addition dll 已加载 但 找不到入口点 DLLRegisterServer 确保 Addition dll 是有效的 DLL 或
  • AppleScript 和 Mail.app:检查新消息是否包含字符串

    我正在编写一个脚本来检查是否已提交特定的网络表单 到目前为止 脚本内容如下 tell application Mail check for new mail set newmail to get the unread count of in
  • 将 Json String 反序列化为多种 Object 类型

    我有一个从网络服务获得的 Json 字符串 它有一个集合列表 每个集合代表一个对象 例如 Root List First Collection Team Object id 1 team name Equipe Saidi is activ
  • 找不到驱动器 ID。您有权查看此文件吗? Android 谷歌驱动器集成

    我正在使用以下代码github https github com googledrive android demos blob master src com google android gms drive sample demo Edit
  • 基于判别器的 Typescript 窄参数类型

    我有一个旧版 API 如下所示 游乐场链接 https www typescriptlang org play code C4TwDgpgBAwg9gWwQQwHYBMCMUC8UDeAUFCVAMYLoBcUARAiFAGYCWATgM7
  • Django 使用证书身份验证连接到 Postgresql

    在 Django 1 9 中 我必须在 settings py 中进行哪些更改才能使用证书身份验证连接到 postgresql 数据库 将其添加到settings py为我工作 import os DATABASES default ENG
  • 使用 python 删除/替换多行代码部分

    我试图在 python 的帮助下从各种文件中删除包含废弃代码片段的多行 我寻找了一些例子 但无法真正找到我想要的东西 我基本上需要的是原则上执行以下操作 包含非 python 语法 def cleanCode filepath Clean
  • 如何构造一个数组以首先比较然后添加输入

    由于是 React 和 js 的初学者 我很难正确构建数组 我在网上找到一篇文章 说使用concat方法可以构造一个数组 我也遵循同样的技术 但我的问题是它附加数据并比较是否已经存在相同的数据 我想在附加到数组之前比较数据 这样就不会有重复