【问题标题】:How to update object based on id如何根据 id 更新对象
【发布时间】:2020-11-13 08:48:05
【问题描述】:

我有一个对象数组:

employee = [
    {
      name: 'ashish',
      id: 1,
      date: '2020-11-12',
      gender: 'male',
      designation: 'developer'
    },
    {
      name: 'mishra',
      id: 2,
      date: '2020-10-08',
      gender: 'female',
      designation: 'tester'
    }
]

在我的按钮单击功能中,我得到了 id 和它的数据。我想更新 id 与我的数组的任何对象 id 匹配的记录

我试过了。

editEmployee(id,data) {
    this.employee.find(item => item.id == id).name = this.employee;
  }
}

但出现错误:Type '{ name: string; id: number; date: string; gender: string; designation: string; }[]' is not assignable to type 'string'

有什么解决办法吗?

【问题讨论】:

  • 为什么要将对象的name属性设置为this.employee数组?
  • @adiga 刚刚我正在调试,我想更新属于该 ID 的整个对象。
  • data 是否拥有该id 的完整员工对象?
  • 你可以试试const i = this.employee.findIndex(e => e.id === id); this.employee[i] = dataObject.assign(this.employee.find(e => e.id === id), data)
  • @adiga 它不起作用,它正在创建另一个索引为 -1 的对象

标签: javascript angular typescript


【解决方案1】:

试试这个可以吗?

editEmployee(id,data) {
    this.employee.find(item => item.id == id) =  {
      name: data.name,
      id: id,
      date: data.date,
      gender: data.gender,
      designation: data.designation
    }
  }
}

【讨论】:

  • 错误:赋值表达式的左侧必须是变量或属性访问
  • 我认为我需要查看更多代码才能找到问题的根源,因为通过快速搜索新错误我看到了这个stackoverflow.com/questions/47413733/…
  • 无论 OP 的代码是什么样子,此代码都是无效的。在控制台中运行它,它会抛出 OP 提到的错误。 const a = [{ id: 1}]; a.find(b => b.id === 1) = { id: 2 }
【解决方案2】:

你可以简单地做:

editEmployee(id,data) {
return this.employee.map(item => item.id == id ? data : item )
 }

更新

var employee = [
    {
      name: 'ashish',
      id: 1,
      date: '2020-11-12',
      gender: 'male',
      designation: 'developer'
    },
    {
      name: 'mishra',
      id: 2,
      date: '2020-10-08',
      gender: 'female',
      designation: 'tester'
    }
]
function editEmployee(id,data) {
  return employee.map(item => item.id === id ? data : item )
 }
 employee = editEmployee(1,{name:"youba"})
 console.log(employee)

【讨论】:

  • 为什么在这种情况下使用这个?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多