Поиск совпадений по параметрам объекта в массиве.
Здравствуйте. Возникла непредвиденная ситуация. Надо написать функцию, которая перебирает массив объектов, ищет совпадения textarea.value с определенным параметром всех объектов в массиве и возвращает новый, отфильтрованный, массив объектов.
Я почти решил эту задачу. Не могу понять, то ли метод push не работает, то ли я в корне делаю все не правильно. let textarea = document.getElementById("textarea"); let list = [{name:"Вася",age:"23"}, {name:"Игорь", age:”25"}]; function filter(text, parameter){ let a = []; for(let v of list){ if(v[parameter].indexOf(text) != -1) a.push(v); } return a; } let b = filter(textarea.value, "name"); |
3: ” -> "
9: indexOf(s) -> .indexOf(text) |
function filter(list, text, parameter) { return list.filter(el=>el[parameter].includes(text)); } let b = filter(list ,textarea, "age"); |
Он дает пустой массив.
|
<textarea id="textarea"></textarea> <div id="found"></div> <script> let data = [ { name: "Вася", age: "23" }, { name: "Игорь", age: "25" } ]; let textarea = document.getElementById('textarea') let found = document.getElementById('found') let filter = (fields, value) => data.filter(item => fields.some(field => item[field].includes(value))) textarea.addEventListener('input', (e) => found.innerText = JSON.stringify(filter(['age', 'name'], e.target.value))) </script> |
Цитата:
<input type="text" id = "textarea" value = "Игорь"> <script> let textarea = document.getElementById("textarea"); let list = [{name:"Вася",age:"23"}, {name:"Игорь", age:"25"}]; function filter(text, parameter){ let a = []; for(let v of list){ if(v[parameter].indexOf(text) != -1) a.push(v); } return a; } let b = filter(textarea.value, "name"); alert(JSON.stringify(b)); </script> <input type="text" id = "textarea" value = "Игорь"> <script> let textarea = document.getElementById("textarea"); let list = [{name:"Вася",age:"23"}, {name:"Игорь", age:"25"}]; function filter(list, text, parameter) { return list.filter(el=>el[parameter].includes(text)); } let b = filter(list ,textarea.value, "name"); alert(JSON.stringify(b)); </script> |
Часовой пояс GMT +3, время: 23:28. |