Home > Net >  keep objects in an array
keep objects in an array

Time:01-19

How can I store objects in an array so that I can call a method for each object in a loop.

How I would like the result to be:

[[obj1, obj2],[obj3, obj4]].foreach((firstObj, secondObj) => {
   firstobj.search();
   secondObj.search()
})

And the result will be as follows:

Iteration 1: obj1.search(); obj2.search();

iteration 2: obj3.search(); obj4.search();

Any advice is welcome

CodePudding user response:

Use array destructuring in the argument list to "unpack" the pairs to 2 free variables:

[[obj1, obj2], [obj3, obj4]].forEach(([o1, o2]) => {
   o1.search();
   o2.search();
});

This is equivalent to doing (and indeed, this is what Babel compiles the above to)

[
  [obj1, obj2],
  [obj3, obj4]
].forEach((_ref) => {
  let [o1, o2] = _ref;
  o1.search();
  o2.search();
});

CodePudding user response:

You can unpack your array into two separate variables in the callback arguments like this.

[[obj1, obj2],[obj3, obj4]].forEach([firstObj, secondOb] => {
    firstobj.search();
    secondObj.search()
})

Or if you don't know the size of each nested array you can use flat to flatten your array into one then execute your function in a forEach.

[[obj1, obj2],[obj3, obj4]].flat().forEach(obj => {
    obj.search();
})
  •  Tags:  
  • Related