当前位置: 首页 > 知识库问答 >
问题:

在一个大的对象数组上折腾是改变/增加值的“正确方法”吗?

白子明
2023-03-14

我有一个数组,它包含具有多个值的对象,这些值可能从数百个增长到数千个元素,这些元素需要不断地访问和修改。类似于:

var array = [
  {
    id: 'someId',
    val1: 'someValue',
    val2: 'someValue'
  },
  {...n}
] 

为了更改现有对象,我将在遍历数组时通过id获取它

array.forEach(obj => {
  if(obj.id == '999'){
    obj.value2 = 'someOtherValue'
  }
})

我知道有不同的循环方式和不同的方法,如for、indexOf、find等,我并不是问哪一种是最好的或有效的方式,但对一个大数组进行多次迭代似乎很奇怪。

那么,有没有另一种方法,我可以改变一个对象在数组中的某个位置,而不需要每次循环或它是正常的?

共有1个答案

越霖
2023-03-14

如果您想加快速度,可以使用对象而不是数组。

例如。

var obj = {
  someId: {
    val1: 'someValue',
    val2: 'someValue'
    }, ... 
}

这会更快,因为可以使用obj.someid而不是循环访问/修改对象。

 类似资料:
  • 问题内容: 到目前为止,我有一种简单(但可能很昂贵)的方法: 以及如何在学校教我如何做: 有没有更好的方法从Swift中的整数数组获取最大值?理想情况是诸如Ruby之类的单行代码 问题答案: 鉴于: 斯威夫特3: 斯威夫特2:

  • 以下代码工作,即成功更新对象状态变量: 但是我从TypeScript得到了这个警告,这让我觉得这不是更新对象变量的最佳方式: 有没有更正确的、符合React的方法来更新对象变量? 请注意,这不起作用(回复评论):

  • 这些不应该仍然可以用NULL的值访问吗?

  • 我在想如何进行这种转换。 我通常像这样从json转换到Java对象:

  • 我有两个组件,一个包含复选框,另一个是按钮。其目的是前一个组件让我们称之为行,如果复选框被更改,编辑按钮将自动启用,如果复选框不再勾选,编辑按钮将自动禁用。我本来打算添加onclick事件监听器,但最近我读了一些关于状态的文章,认为这可能是一个更好的主意。 这是我的按钮: 这是我的行组件 我的主应用程序呈现可能是这样的 我的意图是,如果单击了复选框,检查所有复选框的状态以确保选中了某些内容,如果选

  • 问题内容: 假设我正在使用一个类从数据库中带回项目,例如 现在,如果只有2种方法(如上)或100种方法(可能其中有些方法非常大),使用此方法的性能将会发生变化。 如果所有方法都放在每个对象上,则实例化数百个这些对象会更糟吗?这适用于c#/ java类型的语言,但是最好对所有语言都了解。 还是有一个单独的类,对这些对象执行所有操作,然后将对象保留为纯数据类,是一种好习惯? 问题答案: 创建对象实例时