在Javascript中获取未经过滤的多维数组

Isa*_*aac 9 javascript filter multidimensional-array

我能够将矩阵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)
Run Code Online (Sandbox Code Playgroud)

我使用了for循环,但生成的Wmin数组是扁平的.我的目标是能够过滤W并仍然得到不平整的2D阵列.

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

Cod*_*iac 7

您可以使用地图过滤器

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)
Run Code Online (Sandbox Code Playgroud)

为什么我的代码不起作用

您正在将值直接推送到内部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)
Run Code Online (Sandbox Code Playgroud)