2016-01-15 80 views
0

我试图让这工作作为我可以在任何字符串当作一个函数调用一个函数来获取使用.maptrue返回的值,然后以数组形式false报表 -我不能得到这个作为一个JavaScript函数(我得到我想要的返回值,当我console.log这个,但我不能称它为一个函数)

我了解.map作品,并能得到它返回我希望在一个值new array当我console.log(lastArray)但我不能让它的功能,我可以调用字符串lastArray(dirtyString)finalArray("the cat pop racecar blue")[false, false, true, true, false]。我不能使用任何循环,必须使用.map(但我已经解决了这些问题,因为只有console.log-ing finalArray为我返回一个正确的值的新数组...我可以看不到我做错了&当我试图重新工作,我得到Undefined。我想保留我的方法,我只是不知道为什么它不能作为我可以调用的函数工作(&我已经完成了数小时的在线调查并已在此工作几天)另外,对不起,我的代码是如此混乱&有时冗余&严重评论(我刚刚尝试了很多方式试图让它工作,我是一种新的CS & JS)此外,当试图调用字符串上的函数时,它也会返回错误。以下是我的代码:

/* split string into array of substrings, clean out extra spaces, return new array of substrings */ 

    var dirtyString = ("stash and pop on this level"); 


    var cleanArray = function(dirtyString){ 
     var splitString = dirtyString.split(" "); 
     var cleanArray = splitString.filter(Boolean); 
     return cleanArray; 
    }; 

    var newArray = cleanArray(dirtyString); 

    /* take each element of the array, if it's a palindrome, add a true element to new array using map; if it's not, add a false element to the new array... using map */ 

    ///helper function that returns correct value when I console.log it/// 
    var lastArray = newArray.map(function(x) { 
     if (x === x.split("").reverse().join("")){ 
     return true;} 
     else { 
      return false;} 
     }); 

    */attempting to put the logic in lastArray into a function I can call /* 

    var palindromicMap = function (dirtyString) { 
     var cleanedArray = cleanArray(dirtyString); 
     var output = cleanedArray.map(function(x){ 
     if (x === x.split("").reverse().join("")){ 
      return true;} 
     else if (x !== x.split("").reverse().join("")){ 
      return false;} 
     }); 
     return output; 
    }; 
    console.log(lastArray); 
*/returns correct outcome /* 
    palidromicMap(cleanArray); 
*/returns error /* 
palindromicMap("cat pop racecar blue"); 
*/returns error/* 
+0

这真的是你用于'if/else'语句的支撑风格吗? – jfriend00

+1

你也可以做'return x === x.split(“”)。reverse()。join(“”)' – Rajesh

+0

***我的意思是lastArray(){not finalArray()} - 对不起,数组太多变量... – KindeR66

回答

1

结帐this jsfiddle here。该函数将一个字符串作为参数,但您给它一个函数,导致误导性的错误消息。

基本上改变了调用到

console.log(palindromicMap(dirtyString)); 

似乎解决问题。

+0

omg,非常感谢你 - 我只是说错了!我对JavaScript非常陌生,看到msg错误只是让我发疯......谢谢! omg,谢谢! – KindeR66

相关问题