我想使用原生或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';
}
}
}
答案 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';
}
}
就“最少的人物”而言,这并不是你应该担心的事情。代码应该是可读性最高的问题之一(通常)。