JavaScript - 在二维数组中查找字符串中的单词字符串

时间:2018-03-11 14:37:08

标签: javascript arrays function

我试图从二维数组中的连续字符串中找到一个单词。

例如:

array = [[0,'r',0,0,0,0,0],
          [0,'a',0,0,0,0,0],
          [0,'p',0,0,0,0,0],
          [0,'p',0,0,0,0,0],
          [0,'l',0,0,0,0,0],
          [0,'e',0,0,0,0,0]];

我想创建一个函数,如果'apple'这个单词在这个数组中是垂直的,那么它将返回true。字符串需要连续。

或者:

array1 = [[0,'e',0,0,0,0,0],
           [0,'l',0,0,0,0,0],
           [0,'p',0,0,0,0,0],
           [0,'p',0,0,0,0,0],
           [0,'a',0,0,0,0,0],
           [0,'q',0,0,0,0,0]];

它应该从上到下,从下到上。

这应该返回false,因为没有连续的字母:

array2 = [[0,'e',0,0,0,0,0],
           [0,'p',0,0,0,0,0],
           [0,'l',0,0,0,0,0],
           [0,'p',0,0,0,0,0],
           [0,'a',0,0,0,0,0],
           [0,'q',0,0,0,0,0]];

你能帮帮忙吗?

3 个答案:

答案 0 :(得分:2)

这是一个完全符合您需要的功能:



let array1 = [
    [0,'r',0,0,0,0,0],
    [0,'a',0,0,0,0,0],
    [0,'p',0,0,0,0,0],
    [0,'p',0,0,0,0,0],
    [0,'l',0,0,0,0,0],
    [0,'e',0,0,0,0,0]
];

let array2 = [
    [0,'r',0,0,0,0,0],
    [0,'e',0,0,0,0,0],
    [0,'l',0,0,0,0,0],
    [0,'p',0,0,0,0,0],
    [0,'p',0,0,0,0,0],
    [0,'a',0,0,0,0,0]
];

function includesWordVertically(matrix, word) {

    for (let j = 0 ; j < matrix[0].length ; j++) {

        let verticalWord = '';

        for (let i = 0 ; i < matrix.length ; i++) {
            verticalWord += matrix[i][j];
        }

        if ((verticalWord.includes(word)) ||
            (verticalWord.split('').reverse().join('').includes(word)))
        {
            return true;
        }

    }

    return false;

}

console.log(includesWordVertically(array1, 'apple'));
// true
console.log(includesWordVertically(array2, 'apple'));
// true
&#13;
&#13;
&#13;

请注意,此函数不会进行必要的检查(例如矩阵不为空,所有行都具有相同的长度等)。

答案 1 :(得分:1)

我会在一个垂直列中组合来自所有字符的单个字符串,并且还添加另一组相同的字符,因此如果分割Apple这个词,您将会fins它是一个字符串。在添加所有字符两次后,您将获得一个像'leappleapp'这样的字符串,你会在那里找到一个苹果

答案 2 :(得分:1)

返回true仅在直列中找到。

var array1 = [[0,'a',0,0,0,0,0],
           [0,'p',0,0,0,0,0],
           [0,'p',0,0,0,0,0],
           [0,'l',0,0,0,0,0],
           [0,'e',0,0,0,0,0],
           [0,'q',0,0,0,0,0]];

function isVertically(array, word) {
    var string = "";
    var index = -1;
    for(var i = 0; i < array.length; i++) {
        var line = array[i];
        for(var j = 0; j < array.length; j++) {
            var element = line[j];
            if(typeof element == "string") {
                if(index < 0)
                    index = j;
                if(j === index)
                    string += element;
            }	
        }
    }
	return string == word;
}

isVertically(array1, "apple")

相关问题