如何创建一个函数,当作为数组元素放置时会产生多个数组元素?

ser*_*erg 2 javascript arrays

有可能创建一个可以解决这个问题的函数magic():

[{a:1}, {b:2}, magic(), {e:5}]
Run Code Online (Sandbox Code Playgroud)

成:

[{a:1}, {b:2}, {c:3}, {d:4}, {e:5}]
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 7

没有那种精确的语法,没有.您可以在ES2015中获得非常接近,但不完全相同(在ES5及更早版本中,您无法真正接近).

在ES2015("ES6")及更高版本中,您可以magic返回任何可迭代的(如数组),并将其与扩展表示法一起使用:

let a = [{a:1}, {b:2}, ...magic(), {e:5}];
// Spread notation ----^^^
Run Code Online (Sandbox Code Playgroud)

例:

// REQUIRES ES2015+ SUPPORT
function magic() {
  return [{c: 3}, {d: 4}];
}
let array = [{a:1}, {b:2}, ...magic(), {e:5}];
console.log(array);
Run Code Online (Sandbox Code Playgroud)

在ES5和更早版本中,您可以magic返回一个数组并使用concat:

var array = [{a:1}, {b:2}].concat(magic()).concat([{e:5}]);
Run Code Online (Sandbox Code Playgroud)

例:

function magic() {
  return [{c: 3}, {d: 4}];
}
var array = [{a:1}, {b:2}].concat(magic()).concat([{e:5}]);
console.log(array);
Run Code Online (Sandbox Code Playgroud)

这不是超高效,因为它创建并丢弃了几个临时阵列,但99.99%的时间,你不在乎.