I wrote a code:
const search = (what, arr) => arr.filter((el) =>
(onde(what,el).tag).includes((onde(what,el).input)));
but it call function onde(), two times.
But it is not needed.
How to set part = onde(what,el);
inside const search ?
so it can be called one time only, as part.tag and part.input
const search = (what, arr) => arr.filter((el) =>
(onde(what,el).tag).includes((onde(what,el).input)));
function exibe(el, index, array) {console.log(index+" = " + el.name +" " + el.value+" " + el.other);}
function onde(what,where) { array1=[]; tags =what.split(':')[0]; tag =tags.split(',');
tag.forEach(element => { array1.push(where[element]);});
array['tag']=array1.join(' ').toLowerCase();
array['input']=what.split(':')[1].toLowerCase();
return array;
}
var array = [
{ name:"string 1", value:"this A", other: "that 10" },
{ name:"string 2 this", value:"those B", other: "that 20" },
{ name:"string 3", value:"this C", other: "that 30" }
];
const serached = search("name,value:this",array);
if (serached) {
serached.forEach(exibe);
} else {
console.log('No result found');
}
1 Answer 1
Save it in a variable first.
const search = (what, arr) => arr.filter((el) => {
const { tag, input } = onde(what, el);
return tag.includes(input);
});
or
const search = (what, arr) => arr.filter((el) => {
const result = onde(what, el);
return result.tag.includes(result.input);
});
answered Oct 17, 2021 at 2:35
CertainPerformance
374k55 gold badges354 silver badges359 bronze badges
Sign up to request clarification or add additional context in comments.
Comments
lang-js