Javascript 带对象的JS布尔逻辑运算

Javascript 带对象的JS布尔逻辑运算,javascript,object,boolean-logic,boolean-operations,Javascript,Object,Boolean Logic,Boolean Operations,…但是用物体 例如: one = {a: false, c: false, e: false}; two = {a: true, b: false, c: false, d:false}; result = somethingJavascriptHas.ObjectAnd(one, two); console.log(result); 将返回: {a: false, c: false}; (我感兴趣的是键,而不是其余的,所以我放弃了第二个对象的值,取而代之的是第一个对象的值。在我的情况下

…但是用物体

例如:

one = {a: false, c: false, e: false};
two = {a: true, b: false, c: false, d:false};

result = somethingJavascriptHas.ObjectAnd(one, two);

console.log(result);
将返回:

{a: false, c: false};
(我感兴趣的是键,而不是其余的,所以我放弃了第二个对象的值,取而代之的是第一个对象的值。在我的情况下,两个对象的值总是相同的,只是它们的一些条目会丢失或不丢失,我想要一个只包含两个对象中存在的键的(带有第一个对象键的值)的最终对象)

这可能吗


为了完整性的缘故,或者,XOR,而不是。(再次假定第一个传递对象的值具有优先级)

只需在对象中循环:

varone={a:false,c:false,e:false};
var-two={a:true,b:false,c:false,d:false};
var res={}
用于(var o合一){
for(两个变量中的t){
如果(t==o)res[t]=1[t]
}
}

console.log(res)
只需在对象中循环:

varone={a:false,c:false,e:false};
var-two={a:true,b:false,c:false,d:false};
var res={}
用于(var o合一){
for(两个变量中的t){
如果(t==o)res[t]=1[t]
}
}
console.log(res)
您可以在一个对象键上使用该功能,并检查两个对象的属性是否都未定义:

varone={a:false,c:false,e:false};
var-two={a:true,b:false,c:false,d:false};
变量三=对象。键(一)。减少((acc,curr)=>{
如果(两个[当前]!==未定义){
acc[当前]=一[当前]&两[当前];
}
返回acc;
}, {});
控制台日志(三个)您可以在其中一个对象键上使用该函数,并检查两个对象的属性是否未定义:

varone={a:false,c:false,e:false};
var-two={a:true,b:false,c:false,d:false};
变量三=对象。键(一)。减少((acc,curr)=>{
如果(两个[当前]!==未定义){
acc[当前]=一[当前]&两[当前];
}
返回acc;
}, {});
控制台日志(三个)
//您的示例:
/*一={a:false,c:false,e:false};
二={a:true,b:false,c:false,d:false};
result=somethingJavascriptHas.ObjectAnd(a,b);
控制台日志(结果);
//将返回:
{a:false,c:false}*/
//工作代码:
常数one={a:false,c:false,e:false};
常数2={a:true,b:false,c:false,d:false};
const onetwo交叉点=Object.keys(一个)
.reduce((currentObj,nextKey)=>{
return!two.hasOwnProperty(nextKey)?currentObj:Object.assign({},currentObj,{
[nextKey]:一个[nextKey]
});
}, {});
控制台日志(Onetwo交叉)
//您的示例:
/*一={a:false,c:false,e:false};
二={a:true,b:false,c:false,d:false};
result=somethingJavascriptHas.ObjectAnd(a,b);
控制台日志(结果);
//将返回:
{a:false,c:false}*/
//工作代码:
常数one={a:false,c:false,e:false};
常数2={a:true,b:false,c:false,d:false};
const onetwo交叉点=Object.keys(一个)
.reduce((currentObj,nextKey)=>{
return!two.hasOwnProperty(nextKey)?currentObj:Object.assign({},currentObj,{
[nextKey]:一个[nextKey]
});
}, {});

控制台日志(Onetwo交叉)既然你说你只需要钥匙,你可以组合,然后

constone={a:false,c:false,e:false};
常数2={a:true,b:false,c:false,d:false};
常数交点=(a,b)=>
Object.keys(a.filter)(aKey=>b.hasOwnProperty(aKey));

控制台日志(交叉点(一,二))既然你说你只需要钥匙,你可以组合,然后

constone={a:false,c:false,e:false};
常数2={a:true,b:false,c:false,d:false};
常数交点=(a,b)=>
Object.keys(a.filter)(aKey=>b.hasOwnProperty(aKey));

控制台日志(交叉点(一,二))是的,这是可能的。你只需要写一些代码就可以了。不要用somtheing
对象。那时就已经有了一些东西了?@tatsu询问库的建议是在Stack overflow结束问题的原因之一。是的,这是可能的。你只需要写一些代码就可以了。不要用somtheing
对象。那么就已经有什么东西了吗?@tatsu在Stack Overflow上问图书馆的建议是结束问题的原因之一好吧,我承认我的措辞有误导性,但对我来说,“不感兴趣”从定义上讲并不能提升自己“是时候删除了”。我应该说“我对这部分的键感兴趣,而不是其余的”或“现在”。区别在于操作没有考虑到第二个数组的对象。尽管可能性很有趣。好吧,我承认我的措辞有误导性,但对我来说“不感兴趣”从定义上讲,它不会将自己提升为“删除时间”。我应该说“对于这一部分,我对钥匙感兴趣,而不是其他的”,或者“现在”。区别在于操作没有考虑第二个数组的对象。不过很有可能。