Search code examples
javascriptarraysloopsmin

Getting minimum index while ignoring element value in array


Say we have this array:

arr = [[3, 3], [3, 4], [3, 5], [3, 6]]

And we have this conditional:

arr = [[3, 3], [3, 4], [3, 5], [3, 6]]

for(let i = 0; i < arr.length; i++){
    if (arr[i][0] === 3 && arr[i][1] === 4 || arr[i][0] === 3 && arr[i][1] === 5){
        console.log(i)
    }
}

There respective indexes would be 1 and 2, which would display in the console.log() in sequential order.

How would I grab the minimum index (1 in this case), specifically, from that? I cannot store the numbers in an array due to my use case, so I need to establish the minimum within the loop. And you can't really set a min number because you won't know which element index will be the smallest beforehand.

Is this possible or am I overthinking it hard?


Solution

  • You can declare a variable outside the loop, then assign i to it and break the loop if the condition is true:

    arr = [[3, 3], [3, 4], [3, 5], [3, 6]]
    
    var ind = 0
    
    for(let i = 0; i < arr.length; i++){
        if (arr[i][0] === 3 && arr[i][1] === 4 || arr[i][0] === 3 && arr[i][1] === 5){
            ind = i;
            break;
        }
    }
    
    console.log(ind)

    Alternatively, you can use Array.findIndex:

    arr = [[3, 3], [3, 4], [3, 5], [3, 6]]
    
    var ind = arr.findIndex(e => e[0] === 3 && e[1] === 4 || e[0] === 3 && e[1] === 5)
    
    console.log(ind)