gpt4 book ai didi

javascript - 可以在 forEach() 中使用 splice() 吗? Vue 突变

转载 作者:行者123 更新时间:2023-12-03 00:49:02 24 4
gpt4 key购买 nike

您好,也许有更好的方法,但我想用我的响应数据替换与某个索引匹配的对象。我目前正在尝试在 forEach() 内部使用 splice() ,但是它不会替换对象,只会删除它们。

我正在使用 Vue.js

这是我的突变

updateCheckedEngagements(state, checkedEngagements) {
checkedEngagements.forEach((engagement) => {
const index = state.engagements.findIndex((e) => e.id === engagement.id);
state.engagements.splice(index, checkedEngagements.length, {
'id': checkedEngagements.id,
'client_id': checkedEngagements.client_id,
'workflow_id': checkedEngagements.workflow_id,
'return_type': checkedEngagements.return_type,
'year': checkedEngagements.year,
'assigned_to': checkedEngagements.assigned_to,
'status': checkedEngagements.status,
'done': false
})
});
},

最佳答案

无需使用splice(),您只需将特定数组元素重新分配给新的对象值即可。

此外,checkedEngagements 数组中没有诸如 id 之类的属性,您需要特定的engagement 对象实例

checkedEngagements.forEach((engagement) => {
const index = state.engagements.findIndex((e) => e.id === engagement.id);
// TODO: make sure index isn't -1 and return if it is

// reassign that index to new object value
state.engagements[index] = {
'id': engagement.id,
'client_id': engagement.client_id,
'workflow_id': engagement.workflow_id,
'return_type': engagement.return_type,
'year': engagement.year,
'assigned_to': engagement.assigned_to,
'status': engagement.status,
'done': false
}
})

无需手动写出所有属性即可完成此操作的另一种方法是使用 Object.assign()

checkedEngagements.forEach((engagement) => {
const o = state.engagements.find((e) => e.id === engagement.id);
Object.assign(o, engagement, {done:false})
})

关于javascript - 可以在 forEach() 中使用 splice() 吗? Vue 突变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53135076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com