将数组中的一个数组的条目推送到数组中的另一个数组 JavaScript?

Pushing entries from an array within an array to another array within an array for JavaScript?

我有一个信息数组,再分为多个子数组。我希望然后应用修饰符,它们也是数组中的数组。

  var legonisUnits = [
    "/pa/units/land/aa_missile_vehicle/aa_missile_vehicle.json",
    "/pa/units/land/assault_bot_adv/assault_bot_adv.json",
  ];
  var foundationUnits = [
    "/pa/units/air/air_factory_adv/air_factory_adv.json",
    "/pa/units/air/air_factory/air_factory.json",
  ];

  var factionUnits = [
    legonisUnits,
    foundationUnits,
  ];

  var legonisCost = [];
  var foundationCost = [];
  var effeciencyTech = [legonisCost, foundationCost];

  var costBuff = function(faction) {
    _.forEach(faction, function(unit) {
      _.forEach(unit, function(unit) {
        effeciencyTech[0].push({
          file: unit,
          path: "build_metal_cost",
          op: "multiply",
          value: 0.75,
        })
      })
    })
  }
  _.forEach(factionUnits, costBuff(factionUnits))

我遇到的问题是,每当我在 factionUnits.

中切换数组时,如何更改被推送到 efficiencyTech 中的数组

如果你使用数组迭代器的第二个参数forEach - (下面代码中的i),那么你的任务就变得简单多了:

var units = [[], []]; // replace with your own init
var efficiency = [[], []];

units.forEach((faction, i) => {
    efficiency[i] = faction.map(unit => ({
        file: unit,
        path: 'build_metal_cost',
        op: 'multiply',
        value: '0.75'
    })
));

_.forEach()中的回调函数接收数组索引作为第二个参数。您可以使用它来索引 effeciancyTech.

您也不应该在 costBuff 中调用 _.forEach()。您已经在各个派系之间循环,因为您在 _.forEach().

中调用 costBuff

var legonisUnits = [
  "/pa/units/land/aa_missile_vehicle/aa_missile_vehicle.json",
  "/pa/units/land/assault_bot_adv/assault_bot_adv.json",
];
var foundationUnits = [
  "/pa/units/air/air_factory_adv/air_factory_adv.json",
  "/pa/units/air/air_factory/air_factory.json",
];

var factionUnits = [
  legonisUnits,
  foundationUnits,
];

var legonisCost = [];
var foundationCost = [];
var effeciencyTech = [legonisCost, foundationCost];

var costBuff = function(faction, index) {
  _.forEach(faction, function(unit) {
    effeciencyTech[index].push({
      file: unit,
      path: "build_metal_cost",
      op: "multiply",
      value: 0.75,
    })
  })
}
_.forEach(factionUnits, costBuff)
console.log(effeciencyTech);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.19/lodash.min.js"></script>