0

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

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);
});
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.