Сравнить два массива разной длины

#javascript

#javascript

Вопрос:

У меня есть 2 массива в jade с разными размерами длины, я просто хочу проверить, совпадает ли идентификатор, чтобы они были выбраны, а остальные нет

  // jsCategory length 6
    var jsCategory = array1 
   // jsCategory length 3
   var jsMy = array2

   var html_option = '';

   for (var i = 0; i < jsCategory.length; i  ) {

    for (var z = 0; z < jsMy.length; z  ) {
     if (jsCategory[i]._id == jsMy[z]._id) {
            //Correct
            html_option  = '<option value='   jsCategory[i]._id   ' selected>'   jsCategory[i].name   '</option>';
        } else {
            //Not Select err
            console.log(jsCategory[i]);
        }
    }
}

document.write(html_option);
  

Комментарии:

1. Похоже, вы почти все поняли правильно. Просто завершите внутренний цикл, когда добьетесь успеха, после html_option = line добавьте break;

2. Но в чем ошибка?

Ответ №1:

Проще использовать filter и reduce

 const findById = inWhere => ({ _id }) => !!inWhere.find(t => t._id === _id)

const html_option = array1
   .filter(findById(array2))
   .reduce((html, ({_id, name}) => 
        html  = `<option value=${_id} selected>${name}</option>`, ''))
  

Комментарии:

1. отсутствует) после списка аргументов