user3768564
user3768564

Reputation: 314

JavaScript syntax declare object inside function

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');
        }

Upvotes: 0

Views: 28

Answers (1)

CertainPerformance
CertainPerformance

Reputation: 370679

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);
});

Upvotes: 1

Related Questions