2015-04-02 9 views
-2

好家伙我必须要改变这一点:的JavaScript用绳子打显示三角形

abcdexgh

bbbdxxxh

abcxxxxx

在找这样的:

一* CDE * GH

*** d ***^h

ABC *****

但是现在看起来是这样的:

一个* CDE * GH

*** *** dħ

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);

现在我已经加入到控制台上显示两个阵列,以检查是否一个会改变,其他不会。问题是我同时改变了这两个同时我写只改变结果。或者我可以使它只有一个数组,但仍然不能改变数组的最后一行。任何提示?谢谢。

+0

所以 “三角形”,如果我理解这个权利,是当一行上的单个字符由相同的偏移量上的三个相同的字符匹配 - 下一行中的1,以及可选的5偏移量为-2的下一行等?还有其他情况,比如直角三角形还是自上而下? – Touffy 2015-04-02 11:35:35

+0

哇,我知道我们的开发人员有过度工程的倾向,但是......呃..去读https://developer.mozilla。org/en/docs/Web/JavaScript/Reference/Global_Objects/String /再次替换。而当你在这里,看看这个很酷的https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map。 – 2015-04-02 11:35:50

+0

目前,您的问题对代码的目的没有任何解释(又称您想实现什么目标?)此外,它看起来很像学生练习。 StackOverflow不是解决你作业的地方!请考虑阅读这个答案的更多细节:http://bit.ly/1P20m2A – Daniel 2015-04-02 11:36:34

回答

0

问题是这样的行代码:

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

它简单地跳过的最后一个元素,因为ARR第[i + 1]在这种情况下undifined。

+0

最后一个元素应该已经被检查过。 – 2015-04-03 09:08:05

0

第一次迭代后,阵列将是:

一个* CDE * GH

*** d ***^h

在第二次迭代,你要匹配*与x这不会是真的。 因此,结果是:

一个* CDE * GH

*** *** dħ

abcxxxxx