使用JavaScript从2D数组进行单词搜索

使用JavaScript从2D数组进行单词搜索,javascript,arrays,Javascript,Arrays,我这里有这个密码。我想做的是访问2D数组,从该数组中取出诸如“星”和“实”之类的值,并将其存储在新数组中。我只想从左到右或从上到下读单词 let testArr = [ [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ",

我这里有这个密码。我想做的是访问2D数组,从该数组中取出诸如“星”和“实”之类的值,并将其存储在新数组中。我只想从左到右或从上到下读单词

let testArr = [
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "],
[" ", "S", "T", "A", "R", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "],
[" ", " ", " ", " ", "E", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "],
[" ", " ", " ", " ", "A", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "],
[" ", " ", " ", " ", "L", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "],
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "],
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "],
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "],
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "],
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "],
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "],
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "],
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "],
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "],
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "]
];

let newArr = [];    //I want this to output ['STAR', 'REAL']

function scanArr() {
  const column = 15;

  for (let y = 0; y < 15; y += 1) {
    for (let x = 0; x < 15; x += 1) { 
      newArr.push(testArr[y][x])  //This code here does not work
    }
  }
}

scanArr();

假设你认为一个字是任意两个或多个字母的水平或垂直序列,假设空网格槽包含空格而不是空字符串,则可以采用下面的方法。 它做了以下工作:

每行- 将行连接成字符串 折叠空白 将空格上的字符串拆分为一个单词数组 删除长度小于两个字母的单词 转换二维数组,使列现在成为行 对以前的列重复上述操作 合并结果 设testArr=[ [ , , , , , , , , , , , , , , ], [,S,T,A,R,,,,,,,,], [,,,E,,,,,,,,,,], [,,,A,,,,,,,,,,,], [,,,L,,,,,,,,,], [ , , , , , , , , , , , , , , ], [ , , , , , , , , , , , , , , ], [ , , , , , , , , , , , , , , ], [ , , , , , , , , , , , , , , ], [ , , , , , , , , , , , , , , ], [ , , , , , , , , , , , , , , ], [ , , , , , , , , , , , , , , ], [ , , , , , , , , , , , , , , ], [ , , , , , , , , , , , , , , ], [ , , , , , , , , , , , , , , ] ]; 函数findHorizontalWordsarr{ 让单词=[]; arr.forEachrow=>{ words=words.concatrow.join.replace/\s\s+/g',.split'.filterword=>word.length>1 } 回话 } 函数转置器{ 返回arr[0]。映射,colIndex=>arr.maprow=>row[colIndex] } 设horizontalResults=findHorizontalWordstestArr 设verticalResults=FindHorizontalWordStransPosetStarr 让结果=水平结果。连续垂直结果
console.logresults这是我的看法。例如,尽管const column=15完全没有使用,我还是尽量保留了您的原始代码

当你在每个条目上走过去时,将字母添加到累加器中。当遇到空格或行尾时,冲洗蓄能器。您可以维护两个这样的累加器,一个用于垂直单词,另一个用于水平单词

设testArr=[ [ , , , , , , , , , , , , , , ], [,S,T,A,R,,,,,,,,], [,,,E,,,,,,,,,,], [,,,A,,,,,,,,,,,], [,,,L,,,,,,,,,], [ , , , , , , , , , , , , , , ], [ , , , , , , , , , , , , , , ], [ , , , , , , , , , , , , , , ], [ , , , , , , , , , , , , , , ], [ , , , , , , , , , , , , , , ], [ , , , , , , , , , , , , , , ], [ , , , , , , , , , , , , , , ], [ , , , , , , , , , , , , , , ], [ , , , , , , , , , , , , , , ], [ , , , , , , , , , , , , , , ] ]; 设newArr=[]//我希望这个输出['STAR','REAL'] 类累加器{ 构造输出{ this.val=; 这个。输出=输出; } addc{ 如果c!=''{ 这个.val+=c; }否则{ 这是我的同花顺; } } 冲洗{ 如果this.val.length>0{ 如果this.val.length>1{ this.output.pushthis.val; } this.val=; } } } 函数扫描{ 常数列=15; 设h=新累计器或新累计器; 设v=新累计器或新累计器; 对于设y=0;y<15;y+=1{ 对于设x=0;x<15;x+=1{ h、 addtestArr[y][x] v、 addtestArr[x][y] } h、 齐平; v、 齐平; } } 斯堪纳;
console.lognewarr您对单词的定义是什么?两个或两个以上字母的水平或垂直顺序?