这是我的示例数组
var studentId= 2;
var students = [
[{id:1,C:40,PHP:50},{id:2,C:60,PHP:70},{id:3,C:80,PHP:90}]
[....]
[...]
]
目前我正在将studentId与学生匹配为
_.forEach(students, function(student){
_.forEach(student, function(st){
if(st.id === studentId){
//do something
}
});
})
如何使用简单的lodash命令实现它。目标是避免两个forloops。
提前致谢。
答案 0 :(得分:0)
如果您只是需要找到具有特定ID的用户,则可能需要将所有学生重新映射到以其ID为关键字的哈希
这可以这样做
students = stundents.reduce( result, studentRow => {
studentRow.forEach(student => result[student.id] = student);
return result;
}, {});
现在,学生是{' studentid':' student obj'}的对象。 通过简单的检查查找学生是否存在
var studentId= 2;
if(students[studentId]){
//student exists
}
或者您可以深度展平数组,然后在结果
上运行Array#filter
var students = _.flattenDeep(students);
var studentFound = students.filter( student => student.id == studentID).length;
if(studentFound){
//student found, do something
}
答案 1 :(得分:0)
试试这个
if (!_.isNil(_.find(students, { 'id': studentId }))) {
// do something
}
答案 2 :(得分:0)
还有另一种方式:
var s = _.chain(students)
.flatten()
.find({'id': studentId})
.value();