首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数组条目转换为具有可变数量参数的对象

将数组条目转换为具有可变数量参数的对象
EN

Stack Overflow用户
提问于 2020-07-13 23:09:10
回答 1查看 36关注 0票数 0

我目前有一些代码如下所示:

代码语言:javascript
复制
      $.when(aiFileGen, foeFileGen, foe2FileGen, playerFileGen).then(function (
        aiFiles,
        foeFiles,
        foe2Files,
        playerFiles
      ) {
        var files = _.assign({}, aiFiles, foeFiles, foe2Files, playerFiles);
        self.files(files);
        done.resolve();
      });

快照self.files()如下:

代码语言:javascript
复制
Object {/pa/ai/unit_maps/ai_unit_map.json.ai: Object, /pa/units/sea/hover_ship/hover_ship.json.ai: Object, /pa/units/sea/fabrication_barge/fabrication_barge.json.ai: Object, /pa/units/sea/drone_carrier/drone/drone.json.ai: Object, /pa/units/sea/drone_carrier/carrier/carrier.json.ai: Object…}

这种方法的问题是,它假设参数的数量是固定的,但参数的数量可以改变。因此,我尝试着转换成更有活力的东西。

代码语言:javascript
复制
      var filesToProcess = [aiFileGen, playerFileGen];

      filesToProcess.push(foeFileGen, foe2FileGen);

      $.when.apply($, filesToProcess).always(function () {
        self.files(_.assign({}, arguments));
        done.resolve();
      });

但是,self.files()的输出如下所示:

代码语言:javascript
复制
Object {0: Object, 1: Object, 2: Object, 3: Object}

在将方法1转换为方法2的过程中,我哪里出了问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-13 23:41:10

问题是你总是用两个参数来调用_.assign({}, arguments)。相反,您希望将arguments中的每个参数作为单独的参数传递给_.assign

这可以类似于您更改$.when调用的方式。但是,您必须先执行convert the arguments to an array,这样才能添加额外的{}参数。

代码语言:javascript
复制
var assignArgs = Array.prototype.push.apply([{}], arguments);
self.files(_.assign.apply(_, assignArgs);

但是,我建议您研究一下spreadrest语法(...)。这使得传递和接受可变数量的参数变得容易得多。

代码语言:javascript
复制
$.when.apply($, filesToProcess).always(function () {
  var assignArgs = Array.prototype.push.apply([{}], arguments);
  self.files(_.assign.apply(_, assignArgs);
  done.resolve();
});

// can be changed to

$.when(...filesToProcess).always(function () {
  self.files(_.assign({}, ...arguments));
  done.resolve();
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62878748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档