JavaScript使用字符串Reveal Triangles

JavaScript playing with string Reveal Triangles

本文关键字:Reveal Triangles 字符串 JavaScript      更新时间:2023-09-26

大家好,我必须更改这个:

abcdexgh

bbbdxxxh

abcxxxxx

看起来像这样:

a*cde*gh

***d***h

abc*****

但现在看起来是这样的:

a*cde*gh

***d***h

abcxxxxx

function revealTriangles(arr){
    var result = arr;
    for ( var i=0;i<arr.length;i++){
        for ( var j=1; j<=arr[i].length-1;j++){
            if(arr[i+1]!==undefined){
                if (arr[i][j]==arr[i+1][j]&&arr[i][j]==arr[i+1][j+1]&&arr[i][j]==arr[i+1][j-1]){
                  result[i]=arr[i].replace(arr[i][j],'*');
                    result[i+1]=arr[i+1].replace(arr[i+1][j+1],'*').replace(arr[i+1][j-1],'*').replace(arr[i+1][j],'*');
                }
            }
        }
    }
    for (i=0;i<result.length;i++) {
        console.log(result[i]);
    }
    for (i=0;i<arr.length;i++) {
        console.log(arr[i]);
    }
}
var arr= ['abcdexgh','bbbdxxxh','abcxxxxx'];
revealTriangles(arr);

现在,我添加了两个数组以在控制台上打印,以便检查其中一个是否会更改,另一个是否不会更改。问题是我在写的时候同时改变了这两个结果。或者我可以只使用一个数组,但仍然无法更改数组的最后一行。有什么提示吗?谢谢

问题是这行代码:

if(arr[i+1]!==undefined){

它只是跳过最后一个元素,因为在这种情况下arr[i+1]是未定义的。

第一次迭代后,数组将为:

a*cde*gh

***d***h

在第二次迭代中,您试图将*与x进行匹配,但这不是真的。因此,结果是:

a*c d e*g h

***d***h

abcxxxxx