Javascript 合并两个对象而不覆盖相同的属性

Javascript 合并两个对象而不覆盖相同的属性,javascript,Javascript,给定Javascript中的以下两个对象: 让sample1={a:1} 设样本2={a:1000,b:2000,c:3000} 如何在不覆盖第一个对象的属性的情况下将它们合并为一个对象? 我尝试了Object.assign和spread操作符…,但它们都覆盖了我的属性,那么不使用lodash的最佳解决方案是什么 所需的输出将是: constresult={a:1,b:2000,c:3000} 不清楚您想要什么。它在标题中说,您不想覆盖属性,但您声明了所需的结果(“因此,使用lodash co

给定Javascript中的以下两个对象:

让sample1={a:1}
设样本2={a:1000,b:2000,c:3000}
如何在不覆盖第一个对象的属性的情况下将它们合并为一个对象? 我尝试了
Object.assign
和spread操作符
,但它们都覆盖了我的属性,那么不使用lodash的最佳解决方案是什么

所需的输出将是:

constresult={a:1,b:2000,c:3000}

不清楚您想要什么。它在标题中说,您不想覆盖属性,但您声明了所需的结果(“因此,使用lodash const result={a:1,b:2000,c:3000}的解决方案是什么”)将覆盖
sample2.a
。无论如何,你不能让两个同名的ID合并在一起,除非你改变其中一个ID名称(据我所知,如果你改变了,那么你得到的对象会更像一个数组)。无论如何,你可以这样做,但我不确定你想要什么。。你能澄清你的问题吗?我希望我正确地理解了你的问题(我对Stackoverflow是新手)

var-sample1={a:1};
var-sample2={a:1000,b:2000,c:3000};
变量集合={sample1,sample2};
log(“合并的示例:”);
控制台日志(收集);
log(“如何访问collection.sample1:”);

console.log(collection.sample1)如果目标是合并两个对象而不影响第一个对象中已有的键,则可以创建自己的实用函数,如下所示

function mergeObjectWithoutOverwriting(mainObject, objectToMerge) {
  Object.keys(objectToMerge).forEach(key => {
    if (!mainObject[key]) mainObject[key] = objectToMerge[key]
  })
  return mainObject
}
然后使用它合并对象

var sample1 = {a: 1};
var sample2 = {a: 1000, b: 2000, c: 3000};

var mergedSample = mergeObjectWithoutOverwriting(sample1, sample2)

结果将是{a:1,b:2000,c:3000}

对象。分配({},sample2,sample1)
@Taplar-我想这似乎是OP想要的,但是当
sample2
包含
sample1
所包含的键时,它将覆盖属性。我不认为在同一个对象中有多个键是可能的,因为对象不能有重复的键,至少不在同一层次结构中——否则您将如何访问它们?@marsnebulas在其
const result
行的问题的最后一行显示了他们想要的。结果具有来自sample2的非重复属性,以及来自sample1的值,该值是重复的。@Taplar-好的,我认为我当时不理解这个问题,因为我认为
const-result…
是他们出于某种原因不想要的,只是使用对象分解,以使const-result={…sample2,…sample1}