gpt4 book ai didi

javascript - 如果更新了重复项之一,如何更新对象数组中其他重复对象的值

转载 作者:行者123 更新时间:2023-11-29 20:48:29 24 4
gpt4 key购买 nike

我从下面的对象连接了所有“Angular 色”键值:

{
"office1": {
"roles": [
{
"name": "Test 0",
"email": "test0@test.com"
},
{
"name": "Test 1",
"email": "test1@test.com"
},
{
"name": "Test 2",
"email": "test2@test.com"
},
{
"name": "Test 3",
"email": "test3@test.com"
}
]
},
"office2": {
"roles": [
{
"name": "Test 3",
"email": "test3@test.com"
},
{
"name": "Test 4",
"email": "test4@test.com"
},
{
"name": "Test 5",
"email": "test5@test.com"
}
]
}
}

所以新的串联数组“combinedRoles”如下所示,它具有重复值(例如{“name”:“Test 3”,“email”:“test3@test.com”}。我想更新所有其他重复项数组中的对象,如果从所有重复对象中更新了任何一个对象。在下面的示例中,数组元素 3 和 4 具有相似的值,因此如果我更新元素 3,它也应该更新元素 4,反之亦然。

combinedRoles = [
{
'name': 'Test 0',
'email': 'test0@test.com'
},
{
'name': 'Test 1',
'email': 'test1@test.com'
},
{
'name': 'Test 2',
'email': 'test2@test.com'
},
{
'name': 'Test 3',
'email': 'test3@test.com'
},
{
'name': 'Test 3',
'email': 'test3@test.com'
},
{
'name': 'Test 4',
'email': 'test4@test.com'
},
{
'name': 'Test 5',
'email': 'test5@test.com'
}
]

最佳答案

如果需要一起更新的对象总是完全相同,创建一个引用数组而不是使用对象字面量可能会奏效。

const obj0 = {'name': 'Test 0',
'email': 'test0@test.com'
}
const obj1 = {'name': 'Test 1',
'email': 'test1@test.com'
}
const obj2 = {'name': 'Test 2',
'email': 'test2@test.com'
}
const obj3 = {'name': 'Test 3',
'email': 'test3@test.com'
}

obj = [obj0, obj1, obj2, obj3, obj3]

现在 obj[3] 和 obj[4] 是对同一个对象的两个引用,所以你对它做的任何事情都会影响数组中的两个引用:

obj[3].email = "foo"
console.log(obj[4].email) // "foo"

如果对象总是相同的,那么您可以编写一个函数来遍历数组,找到每个匹配的对象,然后手动更新它们,但这取决于您如何定义两个匹配的对象。

关于javascript - 如果更新了重复项之一,如何更新对象数组中其他重复对象的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53196080/

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