云数据库中数据结构如下:
{
"_id": "dfajslfad",
"ArrayList": [
{
"uid": "uid1",
"member": [
{
"name": "张三",
"age": 20
},
{
"name": "李四",
"age": 30
}
]
},
{
"uid": "uid2",
"member": [
{
"name": "王五",
"age": 25
},
{
"name": "赵六",
"age": 31
}
]
}
]
}
其中 uid 是全局唯一的,期望通过_id 和 uid 定位到某项具体的一个数组内容,然后再修改。
例如:我想修改uid为 uid2 的数组内容中的 member ,为期增加一个 {name:"增加的",age:15},这个该如何写呢?
不希望出现两次查询。
谢谢各位大神。
因为uid是唯一的,所以遍历时有遇到匹配结果时可以直接break,这样可能有助于提高效率。
for (let idx in data.ArrayList) { if (data.ArrayList[idx].uid == 'uid2') { data.ArrayList[idx].member.push({ name: "增加的", age: 15 }); break; } }
let data = { "_id": "dfajslfad", "ArrayList": [ { "uid": "uid1", "member": [ { "name": "张三", "age": 20 }, { "name": "李四", "age": 30 } ] }, { "uid": "uid2", "member": [ { "name": "王五", "age": 25 }, { "name": "赵六", "age": 31 } ] } ] } data = data.ArrayList.map( ({uid, member}) => (uid === "uid2" ? {uid, member: [...member, {name: "增加的", age: 15}]} : {uid, member})) console.log(data)