#javascript #foreach #find
#javascript #foreach #Найти
Вопрос:
Я хочу исправить предупреждение
Ожидается возврат значения в arrow function array-обратный вызов-возврат».
Я попытался добавить return
, но проблема все еще существует.
listTaskWorkflow.forEach(element => {
workflowDetail.department.departmentsList.find(department => {
if (department.idDept === element.idDept)
element.idDept = department.departmentName;
})
});
Комментарии:
1. Не используйте
find
, если вы не пытаетесь найти элемент по условию и что-то сделать с результатом.2. Пожалуйста, не включайте номера строк в свои блоки кода. Это затрудняет их копирование, чтобы показать, как их изменить.
Ответ №1:
find
ожидает, что вы сообщите ему, является ли элемент, с которым он вам перезванивает, тем элементом, который вы ищете. Чтобы использовать его в этом коде, вы бы оставили idDept
проверку в find
, но затем использовали элемент массива, который он возвращает:
listTaskWorkflow.forEach(element => {
const department = workflowDetail.department.departmentsList.find(department => department.idDept === element.idDept);
if (department) {
element.idDept = department.departmentName;
}
});
Другим вариантом, однако, было бы использовать for-of
цикл:
listTaskWorkflow.forEach(element => {
for (const department of workflowDetail.department.departmentsList) {
if (department.idDept === element.idDept) {
element.idDept = department.departmentName;
break;
}
}
});
Вы могли бы использовать for-of
вместо forEach
, если хотите:
for (const element of listTaskWorkflow) {
for (const department of workflowDetail.department.departmentsList) {
if (department.idDept === element.idDept) {
element.idDept = department.departmentName;
break;
}
}
}
Комментарии:
1. Их смешивание выглядит странно. Я бы рекомендовал использовать
for … of
дважды или использоватьforEach
дважды (не то, чтобы я рекомендовал eveforEach
…)2. @Bergi — Я указал в ответе, что OP
for-of
также может использоватьforEach
вместо. ИспользованиеforEach
дважды не имеет смысла, вам нужно короткое замыкание, когда вы найдете нужный отдел.3. Спасибо @T.J. Crowder это работает, это очень хорошая идея