比较两个对象,并返回唯一的数据
我有两个对象,我只想提取使用下划线js唯一的数据。比较两个对象,并返回唯一的数据
对象1(默认)
{
players: "Players: ",
tableLimit: "Table Limits:",
newCardBtn: "Add New Card",
existingCard: "Use existing one",
contactUs: "Contact Us",
test: {
table: 'test'
}
}
对象2(改写)
{
players: "Players: ",
tableLimit: "Table Limits:",
newCardBtn: "Add New Card",
existingCard: "Use existing one",
test: {
table: 'test'
}
}
最终结果应当返回一个列表与从重写缺失数据。在我们的例子中,它应该返回contactUs: "Contact Us"
到现在我有这个,但它返回的默认对象中的所有数据,而无需自定义:
var def = {
players: "Players: ",
tableLimit: "Table Limits:",
newCardBtn: "Add New Card",
existingCard: "Use existing one",
contactUs: "Contact Us",
test: {
table: 'test'
}
}
var custom = {
players: "Players: ",
tableLimit: "Table Limits:",
newCardBtn: "Add New Card",
existingCard: "Use existing one",
test: {
table: 'test'
}
}
var out = JSON.stringify(Object.assign({}, def, custom));
fs.writeFile("./out.js", out);
这将解析OBJ1,如果没有匹配的属性与匹配值obj2然后它被添加到obj3。你可以看到在输出的结果...
var obj1 = {
players: "Players: ",
tableLimit: "Table Limits:",
newCardBtn: "Add New Card",
existingCard: "Use existing one",
contactUs: "Contact Us",
};
var obj2 = {
players: "Players: ",
tableLimit: "Table Limits:",
newCardBtn: "Add New Card",
existingCard: "Use existing one",
};
var obj3 = (function() {
result = {};
for (var k in obj1) {
if (obj2[k] != obj1[k]) {
result[k] = obj1[k];
}
}
return result;
})();
console.log(obj3);
只是一个问题,如果你只是想给纯js中的一个函数带来变化,那么最好把它标为dupe。 – Rajesh
@Rajesh尽管我同意你提出的作为重复的问题会给OP一个工作解决方案,但对于这个简单的场景来说,这也是巨大的矫枉过正。我的回答永远不会成为你提出的重复问题的有效工作,所以我认为这比你关联问题的答案更合适。我想如果你不需要更深入的比较,大多数人会喜欢这个代码的外观到链接。 – Archer
同意你的观点,但我想这是事情变得灰暗的地方。你的答案适用于这种情况,在愚蠢的答案是更通用的。然而,对于初学者来说,你的答案会更有意义,但对于一位有经验的读者来说,这将会像复制内容一样,这可能会吸引低估。希望人们在选择他们的选票之前确实考虑了这种差异 – Rajesh
我知道后提到不使用'underscore'。如果您只希望在**下划线**,请拒绝它并添加必要的信息。如果你对纯JS版本没有问题,请接受重复,以便其他人不能回答这个问题 – Rajesh