Javascript 获取nasted对象的相同值

Javascript 获取nasted对象的相同值,javascript,arrays,object,Javascript,Arrays,Object,我有一个目标 {eno: Object, sc: Object, r: Object} 每个嵌套对象都包含数组示例 { eno :{data:[0,'a','b','3']}, sc:{data:[0,'a','b','3','f','l']}, r:{data:[0,'a','b','3','p']}, } 每个对象的元素都是动态的 如何获得每个数据数组元素的相同值 相同的值=[0、'a'、'b'、'3']如果没有任何相同的元素某些值='nope'可以使用: 您可以

我有一个目标

{eno: Object, sc: Object, r: Object}
每个嵌套对象都包含数组示例

{
    eno :{data:[0,'a','b','3']},
    sc:{data:[0,'a','b','3','f','l']},
    r:{data:[0,'a','b','3','p']},
}
每个对象的元素都是动态的 如何获得每个数据数组元素的相同值

相同的值=[0、'a'、'b'、'3']
如果没有任何相同的元素
某些值='nope'
可以使用:

您可以使用:

var commonElements=函数(array1,array2){
返回阵列1.过滤器(函数(n){
返回数组2.indexOf(n)!=-1;
});
}
var obj={
eno:{data:[0,'a','b','3']},
sc:{数据:[0,'a','b','3','f','l']},
r:{数据:[0,'a','b','3','p']},
};
var结果=commonElements(obj.eno.data,commonElements(obj.sc.data,obj.r.data))| |“nope”;
log('相同的值:'+结果);
/*使用map、reduce和filter解决方案*/
var res=Object.keys(obj)
.map(o=>obj[o].data)
.reduce((a,b)=>a.filter(c=>b.includes(c));
log('same value:'+res | |'nope')
var commonElements=函数(array1,array2){
返回阵列1.过滤器(函数(n){
返回数组2.indexOf(n)!=-1;
});
}
var obj={
eno:{data:[0,'a','b','3']},
sc:{数据:[0,'a','b','3','f','l']},
r:{数据:[0,'a','b','3','p']},
};
var结果=commonElements(obj.eno.data,commonElements(obj.sc.data,obj.r.data))| |“nope”;
log('相同的值:'+结果);
/*使用map、reduce和filter解决方案*/
var res=Object.keys(obj)
.map(o=>obj[o].data)
.reduce((a,b)=>a.filter(c=>b.includes(c));

log('same value:'+res | |'nope')正如@Alberto Trindade Tavares的回答所说,lodash可以很容易地获得相同的值,代码将非常干净@Alberto Trindade Tavares的回答不提供代码段,也不处理没有相同值时的“nope”逻辑。因此,我想发布一个工作代码片段,如下所示:

var obj={
eno:{data:[0,'a','b','3']},
sc:{数据:[0,'a','b','3','f','l']},
r:{数据:[0,'a','b','3','p']},
}
var sameVal=u0.交叉点(obj.eno.data、obj.sc.data、obj.r.data);
var sameValDisplay='Nope';
如果(sameVal.length>0){
sameValDisplay=sameVal.toString();
}
log('相同的值为:'+sameValDisplay)

正如@Alberto Trindade Tavares的回答所说,lodash可以很容易地获得相同的值,代码将非常干净@Alberto Trindade Tavares的回答不提供代码段,也不处理没有相同值时的“nope”逻辑。因此,我想发布一个工作代码片段,如下所示:

var obj={
eno:{data:[0,'a','b','3']},
sc:{数据:[0,'a','b','3','f','l']},
r:{数据:[0,'a','b','3','p']},
}
var sameVal=u0.交叉点(obj.eno.data、obj.sc.data、obj.r.data);
var sameValDisplay='Nope';
如果(sameVal.length>0){
sameValDisplay=sameVal.toString();
}
log('相同的值为:'+sameValDisplay)

您可以使用forEach()、map()、reduce()和其他函数来操作数组。这不是数组。数组没有键。看看你可以使用forEach()、map()、reduce()和其他函数来操作数组,这不是数组。数组没有键。看看谢谢hassan,如果我将它与forEach()和array.prototype结合起来,它将动态运行。。。谢谢Hanks hassan,如果我将它与forEach()和array.prototype结合起来,您就可以解决我的问题了。。。你解决了我的问题谢谢
var _ = require('lodash');
var sameElements = _.intersection(eno.data, sc.data, r.data);