Javascript 找到并替换价值最佳实践 这方面的最佳实践是什么 什么是最有效的 如何用最少的字符来解决这个问题?(没有丑化的VAR)

Javascript 找到并替换价值最佳实践 这方面的最佳实践是什么 什么是最有效的 如何用最少的字符来解决这个问题?(没有丑化的VAR),javascript,lodash,Javascript,Lodash,我想用土制或洛达斯包含类可以是未分配的,是,或否 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[

我想用土制或洛达斯<代码>包含类可以是未分配的,
,或

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';
    }
  }
}
for(var i=0;i
这是一个不太详细的解决方案,使用
\u 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';
    }
}
var items=self.state.items,
len=项目长度,
i、 obj;
对于(i=0;i

就“最少的角色”而言,这真的不是你应该担心的事情。代码应该是可读的,这是最重要的问题之一(通常)。

使用
forEach()
简化


对我来说,任何微小的性能差异都会被外观更干净的代码所抵消,并且只有在大型数据集上才是真正关键的

“这方面的最佳实践是什么?”-为了什么?你想解决的问题是什么?您提到使用最少的字符:将if/else替换为三元运算符。
inClass
true
false
“Yes”
“No”
?为什么使用
.result
方法而不使用点符号?是或否,您是对的。我的理解是,
forEach
的性能远远低于标准的
for
loop@KirkStrobeck请看我对此的评论。OP询问了最短的代码路径,然后询问了性能…不确定哪一个需要precedence@KirkStrobeck就性能而言,我相信一个
虽然
甚至比
更好,但实际上,它没有什么区别
forEach
更好。
self.state.items.forEach(function(item){
   if (item.student_id === row.student_id) {
        item.inClass = item.inClass === 'No' ? 'Yes' : 'No';
    }
});