Terse way to intersperse element between all elements in JavaScript array?

前端 未结 16 1027
终归单人心
终归单人心 2020-12-17 09:19

Say I have an array var arr = [1, 2, 3], and I want to separate each element by an element eg. var sep = \"&\", so the output is [1, \"&a

16条回答
  •  情深已故
    2020-12-17 10:10

    Using a generator:

    function *intersperse(a, delim) {
      let first = true;
      for (const x of a) {
        if (!first) yield delim;
        first = false;
        yield x;
      }
    }
    
    console.log([...intersperse(array, '&')]);
    

    Thanks to @Bergi for pointing out the useful generalization that the input could be any iterable.

    If you don't like using generators, then

    [].concat(...a.map(e => ['&', e])).slice(1)
    

提交回复
热议问题