#javascript #arrays #foreach
#javascript #массивы #foreach
Вопрос:
Я создал функцию с именем checkLength(input, min, max), которая принимает ввод имени пользователя и пароля, как показано ниже.
checkLength(username, 3, 15);
checkLength(password, 8, 25);
Тем не менее, я хочу передать inputArray, minArray, maxArray, чтобы уменьшить повторяемость с помощью цикла forEach. Но похоже, что цикл forEach может принимать только один массив за раз. Любые предложения о том, как я могу это улучшить?
checkLength2([username,password], [3,8], [8,15])
function checkLength2 (inputArray, minArray, maxArray, i=0) {
inputArray.forEach(input => {
if (input.value < minArray[i]) {
//another error function
i ;
}
});}
Комментарии:
1. Я думаю, что ваш оригинальный подход с двумя вызовами функций имеет гораздо больше смысла
2.
[[username, 3, 8], [password, 8, 15]].forEach(args => checkLength(...args));
это подход.3.
I'm looking to pass in an inputArray, minArray, maxArray
и теперь у вас есть 3 списка, которые вам нужно поддерживать и синхронизировать
Ответ №1:
Вы должны попробовать индексировать из forEach
цикла.
function checkLength2 (inputArray, minArray, maxArray) {
inputArray.forEach((input, i) => {
if (input.value < minArray[i]) {
// do something
} else if (input.value > maxArray[i]) {
// do something else
}
});
}
Комментарии:
1. Спасибо! Это было именно то, что я искал.
Ответ №2:
если вы хотите показать то же сообщение, вы можете попробовать это. или же вы можете использовать оператор if / else для проверки как minArray, так и maxArray
function checkLength2(inputArray, minArray, maxArray, i = 0) {
for (let index = 0; index <= inputArray.length; index ) {
if (inputArray[index].value < minArray[index] amp;amp; inputArray[index].value>maxArray[index]) {
//error
}
}
}