javascript - 在 Javascript 中获取未展平的过滤多维数组

标签 javascript multidimensional-array filter

我能够将矩阵 W 的元素过滤为满足条件语句的元素 => 保留每个内部矩阵中低于中值的元素。中值数组的元素是每个内部数组的中值。

const W = [[45, 60, 15, 35],[45, 55, 75],[12, 34, 80, 65, 90]
];
const median = [ 40, 55, 65 ];
const Wmin = [];
for (let j = 0; j < W.length; j++) {
    for (let k = 0; k < W[j].length; k++) {
        if (W[j][k] < median[j]) {
            Wmin.push(W[j][k]);
        }
    }
}


console.log(Wmin)

我使用了 for 循环,但生成的 Wmin 数组被展平了。我的目标是能够过滤 W 并仍然获得未展平的二维数组。

我得到 Wmin = [ 15, 35, 45, 12, 34 ],但预期的数组应该是 Wmin = [ [15, 35], [45], [ 12, 34] ]

最佳答案

您可以使用 mapfilter

const W = [[45, 60, 15, 35],[45, 55, 75],[12, 34, 80, 65, 90]];
const median = [ 40, 55, 65 ];

const op = W.map(( inp, index) => inp.filter(e => e < median[index]))

console.log(op)

Why my code is not working

您在内部 for 循环中将值直接插入数组,您需要创建一个临时数组并在内循环中将值插入其中,并在外循环中将临时数组插入 Wmin

const W = [[45, 60, 15, 35],[45, 55, 75],[12, 34, 80, 65, 90]];
const median = [ 40, 55, 65 ];
const Wmin = [];
   for (let j = 0; j < W.length; j++) {
     let temp = []
      for (let k = 0; k < W[j].length; k++) {
         if (W[j][k] < median[j]) {
            temp.push(W[j][k]);
         }
     }
  Wmin.push(temp)
}

console.log(Wmin)

关于javascript - 在 Javascript 中获取未展平的过滤多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54838750/

相关文章:

javascript - 如何在函数外部使用全局变量

javascript - 斯努克幻灯片

php多维排序

Python:如何在 RGB 图像上实现二值滤波器? (算法)

javascript - 在过滤器数组上切片参数?

javascript - 如何在打开另一个 div 时切换关闭所有 div

javascript - React下拉菜单的jss样式

java - 用Java对二维数组排序-跳过第一个索引

c++ - 数组奇怪的参数调理

javascript - Extjs 6-过滤网格