【问题标题】:Pushing entries from an array within an array to another array within an array for JavaScript?将数组中的数组中的条目推送到 JavaScript 数组中的另一个数组?
【发布时间】:2023-04-07 09:27:02
【问题描述】:

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

  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 内的数组。

【问题讨论】:

    标签: javascript arrays lodash ecmascript-5


    【解决方案1】:

    如果你使用数组迭代器的第二个参数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'
        })
    ));
    

    【讨论】:

    • 进行了快速测试,这似乎正是我所需要的,而且更干净!不幸的是,我不能使用箭头运算符,因为 es5,但这是一个简单的转换。
    【解决方案2】:

    _.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>

    【讨论】:

    • 不幸的是,这似乎导致 file 成为数组条目中的一个字符,例如/ 然后是 p 然后是 a,等等。
    • costBuff() 不需要第一个 _.forEach(),因为它是从 _.forEach() 调用的。
    猜你喜欢
    • 1970-01-01
    • 2019-01-28
    • 2020-02-01
    • 2016-11-04
    • 2022-01-20
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多