Javascript 循环3个数组,仅当第3个数组中有值时,才获取每个索引位置的最大值,否则返回0

Javascript 循环3个数组,仅当第3个数组中有值时,才获取每个索引位置的最大值,否则返回0,javascript,arrays,Javascript,Arrays,是否有一个函数可以循环多个数组,并且仅当最后一个数组中有值时,才能为每个索引位置获取最大值,否则返回0 我在中使用了一个解决方案,其中我可以获得最大值,但只有在最后一个数组中有值时才需要它 以下是我所追求的一个例子: array1 = [3,54,2,0], array2 = [33,6,1,0], array3 = [0,1,1,11]; 结果=[0,54,2,11]对于相同长度的任意数量的数组,您可以执行以下操作: var result = []; for(var i in array1.

是否有一个函数可以循环多个数组,并且仅当最后一个数组中有值时,才能为每个索引位置获取最大值,否则返回0

我在中使用了一个解决方案,其中我可以获得最大值,但只有在最后一个数组中有值时才需要它

以下是我所追求的一个例子:

array1 = [3,54,2,0],
array2 = [33,6,1,0],
array3 = [0,1,1,11];

结果=[0,54,2,11]

对于相同长度的任意数量的数组,您可以执行以下操作:

var result = [];
for(var i in array1.length) {
    if (!array3[i]) {
         result.push(0);
    }
    else {
         result.push(Math.max(array1[i], array2[i], array3[i]));
    }
}
console.log(result);
var arrs=[[3,54,2,0],[33,6,1,0],[0,1,1,11],
结果=arrs.reduce((p,c,i,a)=>in>c[j]?n:c[j])
:p.map((n,j)=>n>c[j]&&c[j]?n:c[j]);

控制台日志(结果)您可以使用检查和映射,并从右侧使用

它从数组的右侧开始,并考虑零值。如果以零值开始,则将零值用作结果值

var数组=[[3,54,2,0],[33,6,1,0],[0,1,1,11],
结果=数组.reduceRight(函数(r,a){
返回r.map(函数(b,i){
返回b&&Math.max(b,a[i])|0;
});
});
控制台日志(结果)

.as控制台包装{max height:100%!important;top:0;}
0不是一个值?这是最好的答案。
     r  [ 0,  1,  1, 11]
     a  [33,  6,  1,  0]
------  ----------------
     r  [ 0,  6,  1, 11]
     a  [ 3, 54,  2,  0]
------  ----------------
result  [ 0, 54,  2, 11]
         ^^
         column with zero as start value