我能够将矩阵 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] ]
最佳答案
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/