我不能将它作为一个JavaScript函数工作(我在调试时得到了我想要的返回值。这个但我无法将其称为函数)

时间:2016-01-15 07:04:32

标签: javascript arrays function dictionary

我试图将其作为一个函数工作,我可以将其作为函数调用任何字符串,以使用数组形式获取truefalse语句的返回值.map -

我理解.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/*

1 个答案:

答案 0 :(得分:1)

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

基本上将调用更改为

console.log(palindromicMap(dirtyString));

似乎解决了这个问题。