什么是有效的非破坏性 javascript(jquery ok,如果需要)返回对象A中不在对象B中的所有内容的方法,以及来自对象B的绝对无效的方法? e.g。
对象A
objectA = {
thing1 : {/*various sub-properties*/},
thing2 : {/*various sub-properties*/},
thing3 : {/*various sub-properties*/},
thing4 : {/*various sub-properties*/}
}
对象B
objectB = {
thing3 : {/*various sub-properties*/},
thing4 : {/*various sub-properties*/},
thing5 : {/*various sub-properties*/}
}
应该返回
{
thing1 = {/*various sub-properties*/},
thing2 = {/*various sub-properties*/}
}
在我的例子中,子属性的值可能不同。它正在被重要的标识符剥离。
答案 0 :(得分:3)
只需一个简单的循环即可:
var returnObject = {};
for (var prop in objectA) {
if (objectA.hasOwnProperty(prop) && !objectB.hasOwnProperty(prop)) {
returnObject[prop] = objectA[prop];
}
}
如果您可以使用下划线库,那么omit方法可以很好地工作(以及键方法):
var returnObject = _.omit(objectA, _.keys(objectB));
答案 1 :(得分:0)
这个怎么样?
function check(a, b) {
var out = {};
for (var key in a) {
if (a.hasOwnProperty(key)) {
if (b[key]) { continue; }
out[key] = a[key];
}
}
return out;
}