Search code examples
javascriptarraysnested-loops

Comparing between 2 different nested arrays in JavaScript


I've been on this for a while but haven't been able to arrive at my desired result. I'd like to compare items in two arrays based on their indexes. Something like this:

const first = 0;
const second = 1;
const result = []; // should equal (false, true, false)

const final = [[[2,3],[1,1]],[[4,2],[3,0]],[[0,3],[1,1]]];

for (let i = 0; i < final.length; i++) {
    for (let j = 0; j < final[i].length; j++){
//Comparison between ((2 and 3) && (1 and 1)) with a single result.
//Should also compare between ((4 and 2) && (3 and 0)) and many other nested arrays
//This logic is not the right one as it can't do the comparison as intended.
      if (final[i][j][first] > final[i][j][second]) {
result.push(true);
    } else result.push(false);
  }


I hope this is understood, enough. There is a very similar problem like this one. I don't know if it's right to post it here or open another ask a question, but they're both similar.

Thanks very much.


Solution

  • You can try it :

    const first = 0;
    const second = 1;
    
    const final = [[[2,3],[1,1]],[[4,2],[3,0]],[[0,3],[1,1]]];
    
    const result = final.map(([e1, e2]) => (e1[first] > e1[second] && e2[first] > e2[second]))
    console.log(result)
    
    // with non arrow function
    function compareArr(arr, first, second) {
      return arr.map(function (ele) {
        return ele[0][first] > ele[0][second] && ele[1][first] > ele[1][second]
      })
    }
    console.log(compareArr(final, first, second))
    
    // with non map function :
    function compareArr1(arr, first, second) {
      let result1 = []
      for(let i = 0; i < arr.length; i++) {
        result1[i] = true
        for(let j = 0; j < arr[i].length; j++) {
          if(!(arr[i][j][first] > arr[i][j][second]))
            result1[i] = false
          }
      }
      return result1
    }
    console.log(compareArr1(final, first, second))

    UPDATE : edit with suggest from @yes sir

    Update : about ([e1,e2]) :

    normal : Array.map((ele) => .....) with structure of ele is [a, b]

    It can use same as : Array.map(([a, b]) => .....)

    Document of it : Destructuring assignment