2014-09-02 7 views
1

У меня есть вопрос относительно уменьшения поведения подчеркивания с объектом.Подчеркивание _.изменяет поведение с объектом

Учитывая следующий объект:

var data = [ { type: "A", val: 2 }, 
      { type: "B", val: 3 }, 
      { type: "R", val: 3 }, 
      { type: "L", val: 3 }, 
      { type: "R", val: 3 }, 
      { type: "A", val: 1 }, 
      { type: "B", val: 5 } ]; 

И следующая функция:

output = _(data).reduce(function(mem, d) { 

       console.log(mem); 
       mem[d.type] = d.type; 

       return mem 
     }, {}); 

Выход в консоли для всех 8 итераций:

Object { A: "A", B: "B", R: "R", L: "L" } 

1) Почему это происходит, должен ли первый вывод не быть пустым, поскольку я дал ему {} в качестве моего начального состояния?

2) Почему это так, что все уникальные типы были найдены с первой итерации?

Любая помощь будет оценена, спасибо.

+0

Вы протоколированием объекта а затем изменить его на следующей итерации; это вопрос о том, как объекты регистрируются в браузере, а не о том, как работает 'сокращение'. – Mathletics

+0

вы фактически не используете _.reduce, вы используете [] .reduce ... – dandavis

+0

@ dandavis, независимо от того, что такое '_', что не связано с проблемой. –

ответ

0

Нет проблем с кодом.

Проблема заключается в том, что ваша консоль автоматически не расширяет объекты, пока вы не нажмете маленький треугольник, чтобы развернуть этот объект. Он показывает вам усеченную ссылку объекту, который не станет реальным, пока вы не разворачиваете объект.

Чтобы это увидеть, проверить эту серию скриншотов:

я создал объект: http://i.imgur.com/nTU3Ld0.png

Затем я расширить консоль от первого выхода: http://i.imgur.com/NCCpgfd.png

+0

Вау, я проверил Chrome и Firefox перед публикацией. Посмотрел на него в firebug, и вот, он дает ожидаемое поведение. Спасибо за помощь. – clery00

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