如何使用自己的元素和另一个数组的元素初始化javascript数组?

时间:2017-08-19 01:41:13

标签: javascript arrays initialization

这是一个类似于我的情况的示例代码:

var customProcessor = function test1(arga, argb, argc, argd) {
  console.log('customProcessor', 'arga', arga);
  console.log('customProcessor', 'argb', argb);
  console.log('customProcessor', 'argc', argc);
  console.log('customProcessor', 'argd', argd);
};

var utilityMethod = function test2(arga, argb, someFunc, cbArgs) {
  console.log('utilityMethod', 'arga', arga);
  console.log('utilityMethod', 'argb', argb);
  cbArgs.unshift(argb);
  cbArgs.unshift(arga);
  someFunc.apply(this, cbArgs); // INTENT: someFunc(arga, argb, argc, argd);
};

utilityMethod('argA', 'argB', customProcessor, ['argC','argD']);

上面的代码设法将所有4个必需参数传递给我的customProcessor方法,但以下几行在意图方面不是最易读的:

  cbArgs.unshift(argb);
  cbArgs.unshift(arga);
  someFunc.apply(this, cbArgs); // INTENT: someFunc(arga, argb, argc, argd);

有没有办法以更加不言自明的方式编写它们...使用我可能不知道的JS语法?

在这里,我想象的更具可读性:

  // not real code
  someFunc.apply(this, [arga, argb, cbArgs]);

但是我需要知道是否有一个真实的JS语法来完成这个?

2 个答案:

答案 0 :(得分:2)

使用spread syntax

[arga, argb, ...cbArgs]

请注意,这也直接适用于函数调用,替换apply(如果您不需要明确的this),例如someFunc(arga, argb, ...cbArgs)

答案 1 :(得分:1)



function customProcessor(a, b, c, d) {
  console.log('customProcessor:', a, b, c, d);
};

function utilityMethod(arga, argb, someFunc, cbArgs) {
  console.log('utilityMethod  :', arga, argb);
  someFunc(arga, argb, cbArgs[0], cbArgs[1]); 
  // or
  someFunc.apply(this, [arga, argb].concat(cbArgs)); 
};

utilityMethod('argA', 'argB', customProcessor, ['argC','argD']);