Javascript 如何使用forEach方法准确地记录我需要的东西

Javascript 如何使用forEach方法准确地记录我需要的东西,javascript,Javascript,我有一个50个用户的阵列。 然后我有一个showById方法:应该登录到由id匹配的console用户对象中,如果我们找不到用户,它应该记录“找不到id为的用户:_u;”; 以下是我所拥有的: 常量用户=[{ id:1, 名字:艾布纳, 姓:格拉斯纳, 性别:男 语言:茨瓦纳 }, { //... }] 类用户列表{ 构造器用户{ this.users=用户; } 秀名{ users.forEachfunction用户{ console.loguser; 归还这个; } } showbyid{

我有一个50个用户的阵列。 然后我有一个showById方法:应该登录到由id匹配的console用户对象中,如果我们找不到用户,它应该记录“找不到id为的用户:_u;”; 以下是我所拥有的:

常量用户=[{ id:1, 名字:艾布纳, 姓:格拉斯纳, 性别:男 语言:茨瓦纳 }, { //... }] 类用户列表{ 构造器用户{ this.users=用户; } 秀名{ users.forEachfunction用户{ console.loguser; 归还这个; } } showbyid{ users.forEachfunction用户{ 如果id==user.id{ console.loguser.first_name; }否则{ console.log`找不到用户id:${id}`; } } }
} 发生的情况是,if/else块位于forEach循环内,因此无论该特定用户发生了什么,都会有一些内容记录到控制台

要解决这个问题,您必须使用另一个变量来跟踪是否找到了该用户。然后,一旦找到该用户,将该变量设置为true,并且只有在循环后仍然为false时才能打印无法找到用户id

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}`);
    }
}

发生的情况是,if/else块位于forEach循环内,因此无论该特定用户发生了什么,都会有一些内容记录到控制台

要解决这个问题,您必须使用另一个变量来跟踪是否找到了该用户。然后,一旦找到该用户,将该变量设置为true,并且只有在循环后仍然为false时才能打印无法找到用户id

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}`);
    }
}
考虑使用

考虑使用

您的forEach将评估每个项目。它没有退出条件

而是使用,当找到匹配项时停止:

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}]; 函数showById{ 让user=users.findu=>u.id==id; 让output=user?user.first_name:`找不到用户id:${id}`; 返回控制台。注销输出; } showById2; showById3 您的forEach将评估每个项目。它没有退出条件

而是使用,当找到匹配项时停止:

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}]; 函数showById{ 让user=users.findu=>u.id==id; 让output=user?user.first_name:`找不到用户id:${id}`; 返回控制台。注销输出; } showById2;
showById3;我认为forEach是个问题,forEach通过每个项目执行它的主体,49次id会有所不同。在找到用户或从for中注销消息后,尝试使用for并返回。如果用户不存在,我认为forEach是问题所在,forEach按每个项执行其正文,49次id将不同。尝试使用for并在找到用户后返回,或者如果用户不存在,则从for中注销消息