#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. отсутствует) после списка аргументов