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');
}
CodePudding user response:
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);
});