Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多维数组中的偶数校验_Javascript_Arrays_Multidimensional Array_Numbers - Fatal编程技术网

Javascript 多维数组中的偶数校验

Javascript 多维数组中的偶数校验,javascript,arrays,multidimensional-array,numbers,Javascript,Arrays,Multidimensional Array,Numbers,您好,我在编写代码时遇到了一个问题,我想检查多维数组中的偶数,然后如果行或列中出现的偶数超过等于3次,则更改为“X”,但如果小于3次,我会将其全部更改为“X”。我的代码如下: function evenNumbers(numbers){ for(var i = 0; i < numbers.length; i++){ for(var j = 0; j < numbers[i].length; j++){ if(numbers[i][j] % 2 ==

您好,我在编写代码时遇到了一个问题,我想检查多维数组中的偶数,然后如果行或列中出现的偶数超过等于3次,则更改为“X”,但如果小于3次,我会将其全部更改为“X”。我的代码如下:

function evenNumbers(numbers){

  for(var i = 0; i < numbers.length; i++){
     for(var j = 0; j < numbers[i].length; j++){
        if(numbers[i][j] % 2 == 0){
           numbers[i][j] = 'X'
        }
     }
  }
  return numbers
}


console.log(evenNumbers([
  [1, 2, 4, 6, 5],
  [6, 17, 8, 11, 10],
  [8, 11, 10, 18, 16],
  [18, 12, 19, 27, 21],
  [22, 10, 12, 22, 12]
]));
我得到的是:

[ [ 1, 'X', 'X', 'X', 5 ],
  [ 'X', 17, 'X', 11, 'X' ],
  [ 'X', 11, 'X', 'X', 'X' ],
  [ 'X', 'X', 19, 27, 21 ],
  [ 'X', 'X', 'X', 'X', 'X' ] ]
提前谢谢
请帮我解决没有ES6内置的普通JS。再次感谢

您可以使用一些进行检查,然后映射

const arr=[
[1, 2, 4, 6, 5],
[6, 17, 8, 11, 10],
[8, 11, 10, 18, 16],
[18, 12, 19, 27, 21],
[22, 10, 12, 22, 12]
];
函数xEvens(arr){
返回arr.map(行=>{
设i=0;
让shouldChange=row.some(n=>n%2==0&&++i>=3);
返回shouldChange?row.map(n=>n%2==0?'X':n):行;
});
}

console.log(xEvens(arr))您可以尝试以下方法:

想法:
  • 循环数组并返回一个数组,其中
    X
    被替换为偶数
  • 记录替换的数量
  • 如果计数与阈值匹配,则返回此新数组
  • 如果不是,则返回原始数组
这样,您就不需要额外的循环来检查替换的有效性

函数replaceEventswithCondition(arr、minCount、replaceChar){
返回arr.map(函数(行){
var计数=0;
var updatedaray=row.map(函数(n){
var isEven=n%2==0;
计数+=+isEven;
返回isEven?replaceChar:n;
});
返回计数>=最小计数?更新阵列:行
});
}
var arr=[[1,2,4,6,5]、[6,17,8,11,10]、[8,11,10,18,16]、[18,12,19,27,21]、[22,10,12,22,12];

日志(replaceEventswithCondition(arr,3,'X'))你不完全清楚为什么你认为
12
10
不应该转换成
X
,你能给这个问题添加一些细节来说明吗?仅供参考,这个问题不需要ES6hanks,我有没有办法不使用map、filter、reduce等?还有,你也可以使用它。但有什么具体的理由避免使用map吗?请注意,map是ES5的一部分,不会给浏览器带来兼容性问题,除非您能够支持IE8或之前的版本,对于这一点,作为一名代码初学者,我不确定,我需要了解这件事是如何工作的。我,我自己作为一名学生刚刚进入了代码世界。在使用任何方法之前,我们需要手动了解。感谢you@AndyWarhol请参考并尝试回溯进近。这样,如果你失败了,创建一个小提琴,我将用例子回答你的问题,在这个过程中,你将学到一些东西!
[ [ 1, 'X', 'X', 'X', 5 ],
  [ 'X', 17, 'X', 11, 'X' ],
  [ 'X', 11, 'X', 'X', 'X' ],
  [ 'X', 'X', 19, 27, 21 ],
  [ 'X', 'X', 'X', 'X', 'X' ] ]