Правильное предупреждение: «Ожидается возврат значения в arrow function array-обратный вызов-возврат «

#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 дважды (не то, чтобы я рекомендовал eve forEach …)

2. @Bergi — Я указал в ответе, что OP for-of также может использовать forEach вместо. Использование forEach дважды не имеет смысла, вам нужно короткое замыкание, когда вы найдете нужный отдел.

3. Спасибо @T.J. Crowder это работает, это очень хорошая идея