Skip to main content
Module

x/denops_std/function/mod.ts>map

📚 Standard module for denops.vim
Go to Latest
function map
import { map } from "https://deno.land/x/denops_std@v4.3.1/function/mod.ts";

{expr1} must be a List, String, Blob or Dictionary. When {expr1} is a List or Dictionary, replace each item in {expr1} with the result of evaluating {expr2}. For a Blob each byte is replaced. For a String, each character, including composing characters, is replaced. If the item type changes you may want to use mapnew() to create a new List or Dictionary. This is required when using Vim9 script.

{expr2} must be a String or Funcref.

If {expr2} is a String, inside {expr2} v:val has the value of the current item. For a Dictionary v:key has the key of the current item and for a List v:key has the index of the current item. For a Blob v:key has the index of the current byte. For a String v:key has the index of the current character. Example:

:call map(mylist, '"> " .. v:val .. " <"')

This puts "> " before and " <" after each item in "mylist".

Note that {expr2} is the result of an expression and is then used as an expression again. Often it is good to use a literal-string to avoid having to double backslashes. You still have to double ' quotes

If {expr2} is a Funcref it is called with two arguments: 1. The key or the index of the current item. 2. the value of the current item. The function must return the new value of the item. Example that changes each value by "key-value":

func KeyValue(key, val)
  return a:key .. '-' .. a:val
endfunc
call map(myDict, function('KeyValue'))

It is shorter when using a lambda:

call map(myDict, {key, val -> key .. '-' .. val})

If you do not use "val" you can leave it out:

call map(myDict, {key -> 'item: ' .. key})

If you do not use "key" you can use a short name:

call map(myDict, {_, val -> 'item: ' .. val})

The operation is done in-place for a List and Dictionary. If you want it to remain unmodified make a copy first:

:let tlist = map(copy(mylist), ' v:val .. "\t"')

Returns {expr1}, the List or Dictionary that was filtered, or a new Blob or String. When an error is encountered while evaluating {expr2} no further items in {expr1} are processed. When {expr2} is a Funcref errors inside a function are ignored, unless it was defined with the "abort" flag.

Can also be used as a method:

mylist->map(expr2)

Parameters

denops: Denops
expr1: unknown
expr2: unknown

Returns

Promise<
| unknown[]
| Record<string, unknown>
| unknown
| string
>