# vlookup

Definition: | object res = vlookup(object find_item, sequence grid_data, integer source_col, target_col, object def_value=0)
Description: | If the supplied item is in the source column, return the corresponding element from the target column. find_item: An object that might exist in some grid_data[i][source_col]. grid_data: A 2D sequence that might contain find_item. source_col: The column in which to look for find_item. target_col: The column from which the corresponding item will be returned. def_value: Returned when find_item is not found or the target column does not exist in that row.
pwa/p2js: | Supported. As mentioned elsewhere the last 3 examples below will print 1/0 on desktop/Phix but true/false in a web browser, or you could use printf()’s %d/%t for full consistency.
Comments: | If any row in the grid is actually a single atom, that row is ignored. If the length of a row is less than source_col, the row is also ignored.
Example: |
    sequence grid = {{"ant", "spider", "mortein"},
                     {"bear", "seal", "gun"},
                     {"cat", "dog", "ranger"}}

    ?vlookup("ant", grid, 1, 2, "?") -- ==> "spider"
    ?vlookup("ant", grid, 1, 3, "?") -- ==> "mortein"
    ?vlookup("seal", grid, 2, 3, "?") -- ==> "gun"
    ?vlookup("seal", grid, 2, 1, "?") -- ==> "bear"
    ?vlookup("mouse", grid, 2, 3, "?") -- ==> "?"
Implementation: | See builtins\pvlookup.e (an autoinclude) for details of the actual implementation.