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