查找并替换价值最佳实践

时间:2016-06-05 01:18:09

标签: javascript lodash

  • 这是什么最佳做法?
  • 什么是最高效的?
  • 如何用最少的字符解决这个问题? (没有uglifying vars)

我想使用原生或lodash。 inClass可能已取消分配,YesNo

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 个答案:

答案 0 :(得分:1)

使用forEach()简化。

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

对我来说,任何微小的性能差异都会被看起来更干净的代码所抵消,并且只对大型数据集非常重要

答案 1 :(得分: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';
    }
}

就“最少的人物”而言,这并不是你应该担心的事情。代码应该是可读性最高的问题之一(通常)。