您好,我需要合并两个对象与合并在lodash…
object1 = {
"a": {
"name": "masoud", "age": 3, "user": "masmas"
},
"b" : {
"name": "milad", "age": 13, "user": "milmil"
}
}
object2 = {
"b" : {
"pythonSkill" : 18 , "HTMLSkill" : 15
} ,
"c" : {
"phpSkill" : 15 , "CSSSkill" : 16
},
"a" : {
"javaSkill" : 20 , "reactSkil" : 10
} ,
}最后组合对象样本:
final = {
"a": {
"name": "masoud", "age": 3, "user": "masmas", "persianLanguage": 20, "englishLanguage": 10
},
"b" : {
"name": "milad", "age": 13, "user": "milmil" , "pythonSkill": 18, "HTMLSkill": 15
}
}每个对象都没有特定数量的内部对象,并且每次都可能不同。有一次Object1有a,b,c,....,m& other time Object1有m,n,o,c,...
Object2类似的object1 ...
不同场景1-如果Object1有"a“,object2有"a”,finally对象必须有"a“..2-如果Object1没有"a“,object2有"a”,则finally对象没有"a“..3-如果Object1有"a“而object2没有"a”,则finally对象没有"a“。
发布于 2021-04-13 18:32:03
我不知道如何使用_.mergeWith,这对我来说似乎相当困难,但您可以使用_.mapValues和_.pickBy相对容易地实现所需的结果
object1 = {
"a": {
"name": "masoud", "age": 3, "user": "masmas"
},
"b" : {
"name": "milad", "age": 13, "user": "milmil"
},
"d" : {
"name": "nassim", "age": 32, "user": "nm1"
}
}
object2 = {
"b" : {
"pythonSkill" : 18 , "HTMLSkill" : 15
} ,
"c" : {
"phpSkill" : 15 , "CSSSkill" : 16
},
"a" : {
"javaSkill" : 20 , "reactSkil" : 10
} ,
}
let final = _.mapValues(_.pickBy(object1, (v,k) => object2[k]), (v, k, o) => {
return { ...v, ...object2[k] }
});
console.log(final)<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js" integrity="sha512-90vH1Z83AJY9DmlWa8WkjkV79yfS2n2Oxhsi2dZbIv0nC4E6m5AbH8Nh156kkM7JePmqD6tcZsfad1ueoaovww==" crossorigin="anonymous"></script>
https://stackoverflow.com/questions/67071988
复制相似问题