2016-08-04 16 views
-1

私は最初の関数superscriptDesignationをこのコードに追加しましたが、今度はteamDesignationsの項目でそれを呼びたいと思います。 Doing私の機能を別の機能に追加しますか?

return superscriptDesignation(teamDesignations); 

私には、.replaceが定義されていないというエラーが表示されます。私の関数superscriptDesignationをteamDesignationsに追加するにはどうすればいいですか?

JS

var superscriptDesignation = function(designation) { 
     return designation.replace(/(®)/ig, "<sup>&reg;</sup>").replace(/(™)/ig, "<sup> &#153;</sup>"); 
    }; 
    var getTeamDesignations = function(profile) { 
     //Designations for a single team member                                
     var teamDesignations = []; 
     if (profile.team_members) { 
      teamDesignations = _.chain(profile.team_members) 
       .filter(_.compose(_.isArray, _.property('team_member_designations'))) 
       .map(_.property('team_member_designations')) 
       .flatten() 
       .uniq() 
       .value(); 
     } 
     return teamDesignations; 
    }; 
+0

このエラーはいつ発生しますか? –

+0

'superscriptDesignation'関数に文字列以外の値を指定しているようです。それとも全く提供しないか。 – 1ven

+0

あなたはsuperscriptDesignationの引数を渡していません。なぜなら、.replaceが関数ではないと不平を言います。 –

答えて

-1

何これは私が考えさせることteamDesignationsはそれがsuperScriptDesignationsに渡されていた文字列ではないということです。 .replace()は、Stringプロトタイプの単なるメソッドです。

私は.uniq().flatten()に精通していませんが、そのメソッドチェーンの結果は文字列ですか?いずれにせよ、それはすべてifステートメントにあります。それが満たされない場合、teamDesignationssuperScriptDesignationに渡されると空の配列になります。

最初の関数のreplace()メソッドを変更して配列を処理するか、エラー処理を行ってパラメータが文字列であることを確認することができます。すなわち

var superscriptDesignation = function(designation) { 
    if(typeof(designation === 'string)) { 
     //... do your stuff 
    } 
}; 
関連する問題