2016-06-05 2 views
-3
  • Что лучше всего подходит для этого?
  • Что является наибольшим числом?
  • Как это можно решить с наименьшими символами? (без угасающих варов)

Я бы хотел использовать родной или lodash. inClass может быть не назначен, Yes, или No.Найти и заменить значение лучшей практики

for (var i = 0; i < self.state.items.length; i++) { 
    var obj = self.state.items[i]; 
    if (_.result(obj, 'student_id') === _.result(row, 'student_id')) { 
    if (_.result(obj, 'inClass') === 'No') { 
     self.state.items[i].inClass = 'Yes'; 
    } else { 
     self.state.items[i].inClass = 'No'; 
    } 
    } 
} 
+2

* * «Что такое лучшая практика для этого?» - За * каким *? В чем проблема, которую вы пытаетесь решить здесь? Вы упоминаете использование наименьших символов: замените if/else тройным оператором. – nnnnnn

+1

Является 'inClass'' true' или 'false' или' 'Yes" и '' No "'? –

+1

Почему вы используете метод '_.result' вместо использования точечной нотации? – undefined

ответ

0

Это менее многословным решение, использование ._result() кажется излишним:

var items = self.state.items, 
    len = items.length, 
    i, obj; 

for (i = 0; i < len; i++) { 
    obj = items[i]; 
    if (obj.student_id === row.student_id) { 
     obj.inClass = obj.inClass === 'No' ? 'Yes' : 'No'; 
    } 
} 

С точки зрения «наименьшим количеством символов», это на самом деле не то, что вы должны беспокоиться. Код должен быть читаемым как одна из самых серьезных проблем (в целом).

1

Упростить с помощью forEach().

self.state.items.forEach(function(item){ 
    if (item.student_id === row.student_id) { 
     item.inClass = item.inClass === 'No' ? 'Yes' : 'No'; 
    } 
}); 

Для меня какая-то разница незначительной производительности компенсируются уборщик ищет код и только действительно критично на огромных массивах данных

+0

Я понимаю, что 'forEach' намного менее эффективен, чем стандартный цикл' for' –

+1

@KirkStrobeck, чтобы увидеть мои комментарии относительно этого. OP запросил кратчайший код, а затем спросил о производительности ... не уверен, что имеет преимущество – charlietfl

+0

@KirkStrobeck производительность мудрый Я считаю, что 'while' даже лучше, чем' for' – charlietfl

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