没有 else 的三元 if 语句不适用于 &&

Ternary if statement without else not working with &&

我正在尝试将我的代码转换成箭头函数(我对箭头函数比较陌生)但不知道为什么它不能与 && 一起工作。我认为带有 else 的三元 if 语句使用 ? and : 而它使用 && 而没有 else 语句。

为什么以下方法不起作用:

courses.forEach((course) =>
      tutors.forEach((tutor) =>
        tutor.id == course.id &&
        course["name"] = tutor.name
        //console.log(1) has no errors
      )
    );

这有效,我不得不使用 else 语句,又名 : 1

courses.forEach((course) =>
      tutors.forEach((tutor) =>
        tutor.id == course.id ?
        course["name"] = tutor.name : 1
      )
    );

这是没有箭头函数的解决方案,所以基本上解决方案只是将以下内容转换为箭头函数:

courses.forEach(function(course) {
  tutors.forEach(function(tutor) {
    if (tutor.id == course.id) {
      course["name"] = tutor.name;
    }
  });
});

任何关于我做错了什么的解释,或者关于如何最好地转换成箭头函数的任何提示都会很棒。感谢您的帮助。

let tutors = [
   {
     name: "Beth",
     age: 37,
      id: 1
   },
   {
     name: "Bob",
     age: 32,
      id: 2
   },
   {
     name: "Jack",
     age: 63,
      id: 3
   },
   {
     name: "Jess",
     age: 17,
      id: 4
   }
 ],
  courses = [
    {
      code: "AA01",
      description: "Javascript IIFEs, maps, filters, reduces, etc",
      id: 3
    },
    {
      code: "AO83",
      description: "Arrays, for of loops, etc",
      id: 1
    },
    {
      code: "AX40",
      description: "CSS, HTML",
      id: 3
    },
    {
      code: "BX92",
      description: "SQL, Node",
      id: 2
    },
    {
      code: "CC24",
      description: "PHP, Java",
      id: 1
    },
    {
      code: "DI30",
      description: "MongoDB",
      id: 4
    }
  ];

/*
courses.forEach(function(course) {
  tutors.forEach(function(tutor) {
    if (tutor.id == course.id) {
      course["name"] = tutor.name;
    }
  });
});
*/


courses.forEach((course) =>
  tutors.forEach(function(tutor) {
    if (tutor.id == course.id) {
      course["name"] = tutor.name;
    }
  })
);

/*
courses.forEach((course) =>
  tutors.forEach(function(tutor) {
    if (tutor.id == course.id) {
      course["name"] = tutor.name;
    }
  })
);
*/

/*
courses.forEach((course) =>
  tutors.forEach((tutor) =>
    tutor.id == course.id ?
    course["name"] = tutor.name : 1
  )
);
*/

courses.forEach((course) =>
  tutors.forEach((tutor) =>
    tutor.id == course.id &&
    course["name"] = tutor.name
    //console.log(1) has no errors
  )
);

courses.map((cours) => cours["name"] = tutors.find(tutor => tutor.id === cours.id).name)

假设每门课程都有共享相同 ID 的导师

使用forEach

courses.forEach((cours) => cours["name"] = tutors.find(tutor => tutor.id === cours.id).name)

&& 在某些情况下不起作用,因为运行时认为您正在用 left-side

替换值

工作

courses.forEach((course) =>
  tutors.forEach((tutor) =>
    tutor.id === course.id &&
    (course["name"] = tutor.name)
  )
);

没有

courses.forEach((course) =>
  tutors.forEach((tutor) =>
    tutor.id == course.id &&
    course["name"] = tutor.name
  )
)