JavaScript合并多个布尔数组和OR | |运算符
我想使用or | |运算符合并此数组JavaScript合并多个布尔数组和OR | |运算符,javascript,arrays,Javascript,Arrays,我想使用or | |运算符合并此数组 [[true,false,false],[false,false,false],[false,false,true]] 所以输出是 [true,false,true] 使用map或REDUCT或类似工具是否可以实现这一点 编辑:很抱歉这个问题不清楚-是的,它是垂直合并所有子数组在一起。因此,以下输入: [[true,false,false],[false,false,false],[false,false,true],[false,false,true]
[[true,false,false],[false,false,false],[false,false,true]]
所以输出是
[true,false,true]
使用map或REDUCT或类似工具是否可以实现这一点
编辑:很抱歉这个问题不清楚-是的,它是垂直合并所有子数组在一起。因此,以下输入:
[[true,false,false],[false,false,false],[false,false,true],[false,false,true]]
将产生相同的输出:
[true,false,true]
你可以用下面的方法来做
让arr=[[true,false,false],[false,false,false],[false,false,true];
arr=arr.map(函数(元素){
返回元素.reduce(函数(a,b){
返回(a | b);
})
})
控制台日志(arr)代码>您可以使用映射相同索引值的数组进行缩减
var数组=[[true,false,false],[false,false,false],[false,false,true]],
结果=数组.reduce((a,b)=>a.map((c,i)=>b[i]| c));
控制台日志(结果)代码>当您使用一些时,您并不真正需要|
:
var数组=[[true,false,false],[false,false,false],[false,false,true];
var result=array[0].map((uu,i)=>array.some(a=>a[i]);
控制台日志(结果)代码>合并的逻辑条件是什么?1。你希望第一个true
是a[0][0]| a[0][1]| a[0][2]
还是a[0][0]| a[1][0]| a[2][0]
?2.你试图解决这个问题的方法是什么?好吧,多亏了这个不清楚的问题,你现在有了双向的答案。:-)如果你想要第一个,如果你想要第二个。换句话说,TJ的观察,你是垂直合并还是水平合并?您是合并每个数组还是合并所有数组中索引处的值?取决于它们希望以何种方式进行合并。有两个符合问题的输入和输出one@marvel308说清楚点。。你不符合逻辑,你是按位的,你可以使用Boolean
作为cb。这是一个多么简洁的水平合并解决方案-谢谢。但我想做一个垂直合并。