0

ライブストリームのJSONデータを解析して、イベントに特定のタグがあるかどうかを確認しようとしています。そうでない場合は、そのデータを使用して値などを出力します。

何らかの理由でupcoming_event、イベントオブジェクト(関数の戻り値)が割り当てられていませんfindPublicEvent

イベントオブジェクトのconsole.logは正常に機能しますが、返すことは機能しません:/

// get our NLC data from livestream.
// -> note: need the '?callback=?' to convert to JSONP for cross-domain usage
var $uri = 'http://api.new.livestream.com/accounts/newlifechurchtv/?callback=?';
$.getJSON($uri, function(data) {
    parseNLCData(data);
});

parseNLCData = function(nlc_data){
  // set our variable to the return first event
  // nlc_data.upcoming_events.data is a json array of events
  window.upcoming_event = findPublicEvent(nlc_data.upcoming_events.data);
}

// should return single public event
function findPublicEvent (all_events) {
  // if we have events
  if (all_events) {
    // loop through events to find public event
    $.each(all_events, function(index,value){
      // get all the tags, remove whitespace, and put into array
      var $tags = value.tags.replace(/ /g, '').toLowerCase().split(',');
      // check for privacy.
      var $privacy = $.inArray('private', $tags);
      if ($privacy === -1) {
        // if the event isn't private -> return it!
        console.log(value);
        return value;
      }
    });
   // otherwise .... ->
   } else {
    // we don't have events, sooo, no dice.
    return false;
   }

 };
4

1 に答える 1

3

findPublicEventそれを返していません。渡す匿名関数eachはそれを返します。

キャプチャしているのは戻り値なので、findPublicEvent見えません。

  1. のスコープで変数を定義しますfindPublicEvent
  2. 匿名関数内から値を割り当てます(リターンではなく通常の割り当てを使用)
  3. その変数をから返すfindPublicEvent
于 2013-03-14T17:46:00.617 に答える