Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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_Algorithm_Multidimensional Array - Fatal编程技术网

Javascript 如何同时遍历多维数组中的每个数组

Javascript 如何同时遍历多维数组中的每个数组,javascript,arrays,algorithm,multidimensional-array,Javascript,Arrays,Algorithm,Multidimensional Array,假设我有一个多维数组,如下代码所示: var theArray = [ [1, 2, 3], [3, 2, 1], [1, 2, 3], [1, 2, 1] ] 我需要执行一次迭代,根据某些条件对数字进行变异: 如果数字1下面有一个3;它转换为“foo” 如果数字3上面有一个1;它转换为“bar” 如果出现2对1&3或3&1的垂直连续序列,则对不会发生突变 我的问题是,当我使用forEach()对其进行迭代时,我最终会在到达下一个数组之前对当前数组中的数字进行变异,因此我会

假设我有一个多维数组,如下代码所示:

var theArray = [
  [1, 2, 3],
  [3, 2, 1],
  [1, 2, 3],
  [1, 2, 1]
]
我需要执行一次迭代,根据某些条件对数字进行变异:

  • 如果数字1下面有一个3;它转换为“foo”
  • 如果数字3上面有一个1;它转换为“bar”
  • 如果出现2对1&3或3&1的垂直连续序列,则对不会发生突变
我的问题是,当我使用
forEach()
对其进行迭代时,我最终会在到达下一个数组之前对当前数组中的数字进行变异,因此我会使条件无效,因为一旦迭代转到下一个数组;检查失败是因为将出现“foo”或“bar”,而不是1或2

所以像这样的事情是行不通的:

someArray.forEach((array, index) => {
  array.forEach((digit, numIndex) => {
    if(someArray[index + 1][numIndex] == 3 && digit == 1) {
      array[numIndex] = "foo"
    } else if(someArray[index - 1][numIndex] == 1 && digit == 3) {
      array[numIndex] = "bar"
    }
  })
})
因此,;我认为如果这些条件同时存在于所有阵列中,那么必须有一种“实时检查”的方法。特别是考虑到需要通过垂直对检查的最后一个收缩

预期结果:

var theArray = [
  ["foo", 2, 3],
  ["bar" , 2, 1],
  [1, 2, 3]
  [1, 2, 1]
]
这是如何实现的


提前感谢您的帮助

首先检查数组的元素是否存在于
+/-
索引中,然后使用
.each()检查该索引中的所有元素是否仅包含
1
3

var theArray=[
[1, 2, 3],
[3, 2, 1],
[1, 2, 3],
[1, 2, 1]
];
var not=[1,3,1,3];
theArray.forEach((数组,索引)=>{
array.forEach((数字,numIndex)=>{
if(theArray[index+1]&&theArray[index+1][numIndex]
&&数组[索引+1][numIndex]==3&&位==1
&&!theArray.map(arr=>arr[index+1])
.every((el,i)=>el==not[i])&&!theArray.map(arr=>arr[index+1])
.every((el,i)=>el==not.slice(0.reverse()[i])){
数组[numIndex]=“foo”
} 
else if(theArray[index-1]&&theArray[index-1][numIndex]
&&数组[索引-1][numIndex]=“foo”&数字==3){
if(!theArray.map(arr=>arr[index-1])
.every((el,i)=>el==not[i])&&!theArray.map(arr=>arr[index-1])
.every((el,i)=>el==not.slice(0.reverse()[i]))
数组[numIndex]=“条”
}
})
});

控制台日志(数组)
无法从
Array.prototype.forEach()
复制数组中返回值。迭代其中一个,如果是,则对另一个进行变异issues@guest271314谢谢你指出这一点,我修正了它,作为一个例子,这应该是半伪代码。预期的结果是什么数组<代码>[[“foo”,2,3],[3,2,“foo”],[1,2,3],[1,2,1]]
?感谢您的回复,我已经添加了预期结果@guest271314感谢您的回答;这正是我想要的,但只是为了清楚起见;使用.every()检查该索引处的元素是否只有1或3,这是在检查连续的垂直对吗@Guest271314我刚刚在控制台中尝试了这个方法,不幸的是,它没有检查连续的对,它检查该索引处的所有元素是1还是3,但我需要这个来检查它们是否是对@hyper0009很好。您可以定义一个数组,其中包含
theArray
在该特定索引处不应包含的元素,检查当前元素是否设置为
theArray
正向或反向。见更新帖子谢谢更新,这正是我想要的;我可以创建不同的数组来交叉检查不同序列的矩阵@宾馆271314