我有一个包含50个用户的数组。 因此,然后我有了一个showById方法:(应该登录与ID匹配的控制台用户对象,以防我们无法找到用户,它应该记录“无法找到ID为__的用户”); 这是我所拥有的:
git branch --set-upstream-to=origin/master
我希望当前用户输出一个对象,但是我现在拥有的是当前对象和49次“无法找到用户ID:__”;
答案 0 :(得分:4)
考虑使用Array find
method。
showById(id) {
let found = users.find(user => user.id === id);
if (!found) {
return console.log(`Unable to find user id: ${id}`);
}
console.log(found.first_name);
}
答案 1 :(得分:2)
您的forEach
将评估每个项目。没有退出条件。
相反,请使用glVertex
,它会在找到匹配项时停止:
showById(id) {
let user = users.find(u => u.id === id);
let output = user ? user.first_name : `Unable to find user id: ${id}`;
return console.log(output);
}
const users = [{"id": 1,"first_name": "Abner"},{"id": 2,"first_name": "John"}];
function showById(id) {
let user = users.find(u => u.id === id);
let output = user ? user.first_name : `Unable to find user id: ${id}`;
return console.log(output);
}
showById(2);
showById(3);
答案 2 :(得分:1)
发生的事情是您的if/else
块位于forEach
循环内,因此无论该特定的user
发生什么,都会有一些记录到控制台。
要解决此问题,您必须使用另一个变量来跟踪是否已找到该用户。然后,一旦找到该用户,就将该变量设置为true,并在循环后仅打印unable to find user id
如果它仍然为false。
showById(id) {
let found = false;
users.forEach(function (user) {
if (id === user.id) {
console.log(user.first_name);
found = true;
break; // not sure if you can break out of forEach loop
}
})
if(!found) {
console.log(`Unable to find user id: ${id}`);
}
}