考虑数组对象
const userDetails = [
{
name: 'Varun'
age: '18'
userID: 'jqjjqjq881',
someOtherObj: {
//Nested object
}
},
{
name: 'Vkn'
age: '19'
userID: 'j9jjqam880',
someOtherObj: {
//Nested object
}
}]
现在,我想在修改数组内部的对象时更新数组。
即
我将Varun的名称更改为Rahul
const updatedUserDetails = {
name: 'Rahul'
age: '18'
userID: 'jqjjqjq881',
someOtherObj: {
//Nested object
}
}
这里的userID始终保持一致,但是对象在数组中的位置不是恒定的,即
const userDetails = [
{
name: 'Vkn'
age: '19'
userID: 'j9jjqam880',
someOtherObj: {
//Nested object
}
},
{
name: 'Varun'
age: '18'
userID: 'jqjjqjq881',
someOtherObj: {
//Nested object
}
}
}
]
我想用阵列中的这个新对象(updatedUserDetails)替换现有对象(userDetails)
const userDetails = [
{
name: 'Vkn'
age: '19'
userID: 'j9jjqam880',
someOtherObj: {
//Nested object
}
},
{
name: 'Rahul'
age: '18'
userID: 'jqjjqjq881',
someOtherObj: {
//Nested object
}
}
}
]
同样,对象在数组中的位置不会总是相同的(可能是0或1,如果有更多的对象,则是n),但是对象内部的userID会是。
答案 0 :(得分:0)
只需添加此功能即可应用更改
UpdateUser = function(updatedUser, listOfUsers) {
listOfUsers[listOfUsers.findIndex(e => e.userID === updatedUser.userID)] = updatedUser
}
在您的示例中,您需要使用以下参数运行此函数以更新阵列
UpdateUser(updatedUserDetails, userDetails)
答案 1 :(得分:0)
使用find()
方法查找对象而不是对其进行编辑。
const userDetails = [
{
name: 'Varun' ,
age: '18',
userID: 'jqjjqjq881',
someOtherObj: {
//Nested object
}
},
{
name: 'Vkn' ,
age: '19',
userID: 'j9jjqam880',
someOtherObj: {
//Nested object
}
}];
console.log(userDetails);
let obj = userDetails.find(x => {return x.name == "Varun"})
if(obj)
{
obj.name = "Rahul"
}
console.log(userDetails);