2016-01-31 2 views
0

Я собираюсь объяснить это как можно лучше. Прежде всего, я использую Underscore. Я делаю очень простую визуализацию данных для набора данных.Подстрочный метод _.map() и конструктор объектов

В этот момент я просто пытаюсь получить данные, которые я хочу.

Прежде чем я объясню далее, здесь приведен фрагмент моих данных.

var data = 

[ 
    { 
     "id": "a09f4967-10a8-53c1-b53f-8e49ee255734", 
     "type": "chat", 
     "requested_by": "[email protected]", 
     "initial_message": "And here I am using my own lungs like a sucker.", 
     "created_at": 1420190706057, 
     "page_url": "http://www.awesome3ftcakes.com/contact-us.html", 
     "referrer_url": "http://www.bing.com/search?q=top", 
     "entry_url": "unknown", 
     "ip_address": "132.145.187.8", 
     "user_agent": "Mozilla/5.0 (Windows NT 6.1; rv:11.4) Gecko/20100101 Firefox/11.4.6", 
     "latitude": 51.339695, 
     "longitude": 12.373075, 
     "chat_waittime": 10, 
     "chat_duration": 205, 
     "survey_score": 30, 
     "language_code": "", 
     "transcript": [ 
      { 
       "date": 1420190706057, 
       "alias": "Zoidberg", 
       "message": "And here I am using my own lungs like a sucker." 
      }, 
      { 
       "id": "[email protected]", 
       "date": 1420190733788, 
       "alias": "Jerome", 
       "message": "Hi. I'm Troy McClure. You may remember me from such self-help tapes as \"Smoke Yourself Thin\" and \"Get Some Confidence, Stupid!\"" 
      } 
     ] 
    }, ... 

Итак, вот моя проблема:

Я создаю функцию конструктора следующим образом:

function ChatSession(data) { 

    this.duration = data.chat_duration; 
    this.score = data.survey_score; 
    this.repId = data.transcript; 
}; 


var mappedObjects = _.map(data, function(chatSessionData) { 
    return new ChatSession(chatSessionData) 
}); 

console.log(mappedObjects); 

console.log view

Если вы посмотрите на изображение^выше, вы увидите что я получаю свои новые объекты ChatSession, с длительностью, затем с расшифровкой стенограммы, а затем оценка.

Где я столкнулся с проблемой, это ... Я хочу быть более конкретным в расшифровке стенограммы. Я хочу ссылаться на второй объект в массиве транскриптов и получить конкретный идентификатор или псевдоним.

Я пробовал много вещей и в основном получал ту же ошибку. Например, я попытался это:

function ChatSession(data) { 

    this.duration = data.chat_duration; 
    this.score = data.survey_score; 
    this.repId = data.transcript[1].id; 
}; 

и я получаю следующее сообщение в консоли:

Uncaught TypeError: Cannot read property 'id' of undefined

Даже если я часть Ид прочь, ошибка все еще говорит:

Uncaught TypeError: Cannot read property '1' of undefined

Любая помощь будет принята с благодарностью. Я ударяю головой о стену.

ответ

1

Один или несколько объектов данных в вашей коллекции имеют transcript как undefined. Используйте нижеприведенный конструктор, чтобы определить, какие объекты данных в коллекции имеют пропущенное свойство transcript.

Смежные вопросы