2016-07-07 19 views
1

給這個配置對象構件(較大的對象的一部分):中提取數據來創建新的對象

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); 
    }); 

(這只是爲了展示我想要做的 - 不是工作代碼)。

那麼我該如何實現我想要做的?

謝謝。

回答

0

這裏是兩個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>';

+0

美麗,就像一個魅力。謝謝! – wonder95

+0

不客氣。 –