Home > Enterprise >  Get array index at which character at n-th index is found if strings in array were concatenated
Get array index at which character at n-th index is found if strings in array were concatenated

Time:09-25

I have this array [ "one", "two", "three" ].

Now, given an index n, how can I find the index of the array element, in which the character at index n is located? By character at index n I mean the character of all the strings overall, i.e. of "onetwothree". For example: the character at index n = 2 is "e", for n = 3, it’s "t", for n = 4 it’s "w", etc.

The result I’m looking for is the index of the array element where the character at index n was originally found.

Examples for the given array:

Input Output … because the character at index n was
n = 2 0 "e" from "one"
n = 3 1 "t" from "two"
n = 4 1 "w" from "two"
n = 9 2 "e" from "three"

CodePudding user response:

You could find the index by taking the wanted count and subtract the length of the item.

const
    findIndex = (array, count) => array.findIndex(s => (count -= s.length) <= 0),
    array = ["one", "two", "three"];

console.log(findIndex(array, 5));

CodePudding user response:

You could traverse the array and keep track of sum of item lengths. As soon as you see the sum has exceeded the target index, it means you found the element index.

let getIndex = (data, dest) => {

    let sum = 0;

    for (let i = 0; i < data.length; i  ) {
        sum  = data[i].length
        if (dest < sum) {
            return i;
        }
        
    }
    
    return -1;

}

console.log(getIndex(["one", "two", "three"], 4));

Assumes dest is zero based index.

  • Related