Задать вопрос
@75db77

Как отфильтровать по инпутам-чекбоксам массив элементов с помощью метода filter?

Вот есть у меня 4 инпута и 4 элемента в массиве:
https://jsfiddle.net/9mv7sab0/1/
Нужно чтобы при нажатии, например на инпут usa, отоброзился где нибудь на странице элемент из массива arr -"new-york", при нажатии на инпут france элемент из массива arr - "paris" и т.д.
Нашел такой интересный метод filter, и его синтаксис:
var arr = [1, -1, 2, -2, 3];
var positiveArr = arr.filter(function(number) {
  return number > 0;
});
alert( positiveArr ); // 1,2,3

Ну вроде по примеру понятно как фильтрует метод, а вот как в моем случае отфильтровать и как связать мои инпуты с
c массивом arr и функцией что содержит метод filter не знаю. Подскажите пожалуйста как реализовать такую фильтрацию
  • Вопрос задан
  • 615 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 3
@dimoff66
Кратко о себе: Я есть
В вашем конкретном случае сам массив фильтровать вроде и незачем, раз его значения в точности совпадают со значениями инпутов, просто делаете селекторный запрос

var arr = [
	{ country: 'Italy', capital: "rome"},
  { country: 'usa', capital: 'Washington'},
  { country: 'france', capital: 'Paris'},
  { country: 'spain', capital: 'Madrid'},
]

const onClick = () => {
	const countriesChecked = Array.from(document.querySelectorAll('.btn') )
    .filter(item => item.checked)
    .map(item => item.value)
    
  const cities = arr
  	.filter(elem => countriesChecked.includes(elem.country))
    .map(elem => elem.capital)  
    
    alert(cities)
}

[...document.querySelectorAll('.btn')].forEach(item => {
	item.addEventListener('click', onClick)
})
Ответ написан
dollar
@dollar
Делай добро и бросай его в воду.
Не понятно, что именно вы хотите. То есть какую проблему вы решаете.
Ловить события можно примерно так:
https://jsfiddle.net/ayc2ekj0/
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
const checked = Array.from(document.querySelectorAll('.btn:checked'), n => n.value);
const filtered = arr.filter(n => checked.includes(n));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы