Поиск совпадений по параметрам объекта в массиве.
Здравствуйте. Возникла непредвиденная ситуация. Надо написать функцию, которая перебирает массив объектов, ищет совпадения 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, время: 03:23. |