【问题标题】:Extract data from JS config object to create new object从 JS 配置对象中提取数据以创建新对象
【发布时间】:2016-07-07 15:36:58
【问题描述】:

给这个配置对象成员(更大对象的一部分):

  stations: [
    {
      id: "RH",
      positions: ['RH2,', 'RH16', 'RH14']
    },
    {
      id: "WT",
      positions: ['WT10,', 'WT11', 'WT12', 'WT13', 'WT14', 'WT18']
    },
    {
      id: 1,
      positions: ['AO,', 'FF', 'PFF']
    },
    {
      id: 2,
      positions: ['AO,', 'FF', 'PFF']
    },
    {
      id: 3,
      positions: ['AO,', 'FF', 'PFF']
    },
    {
      id: 4,
      positions: ['AO,', 'FF', 'PFF']
    }
  ],

我需要遍历它并为站数组中的每个对象生成这个对象:

var myObj = {
  "station": 1,
  "slots": [
    {
      "position": "AO" 
      "name": [name]
    },
    {
      "position": "FF" 
      "name": [name]
    },
    {
      "position": "PFF" 
      "name": [name]
    },
  ]  
}

我将单独填写名称,所以我现在不担心这个值。

我一直在尝试用 lodash _.forEach() 来做这件事,但我感觉我并没有尽可能有效地使用它。我正在尝试做(并且失败)是在另一个内部使用 _.forEach() ,并且我无法从内部循环访问外部循环中的变量:

  this.shiftTables = [];
  _.forEach(stations, function(station) {
    var table = {
      "station": station.id,
      "slots": []
    };

    //Iterate over station.positions
    _.forEach(station.positions, function(position) {
      var slot = {
        "position": position,
        "name": "Name"
      };
    });

    vm.shiftTables.push(table);
  });

(这只是为了展示我正在尝试做的事情 - 不工作的代码)。

那么我怎样才能完成我想做的事情呢?

谢谢。

【问题讨论】:

    标签: javascript foreach configuration lodash


    【解决方案1】:

    这是带有两个 forEach() 循环的纯 JavaScript 解决方案。

    var data ={"stations":[{"id":"RH","positions":["RH2,","RH16","RH14"]},{"id":"WT","positions":["WT10,","WT11","WT12","WT13","WT14","WT18"]},{"id":1,"positions":["AO,","FF","PFF"]},{"id":2,"positions":["AO,","FF","PFF"]},{"id":3,"positions":["AO,","FF","PFF"]},{"id":4,"positions":["AO,","FF","PFF"]}]}
    
    var result = [];
    
    data.stations.forEach(function(o) {
      var obj = {station: o.id, slots: []}
      o.positions.forEach(function(e) {
        obj.slots.push({
          position: e,
          name: "Name"
        })
      })
      result.push(obj);
    });
    
    document.body.innerHTML += '<pre>' + JSON.stringify(result, 0, 4) + '</pre>';

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-26
      • 1970-01-01
      • 2023-02-09
      • 2019-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多