[英]How to groupby property in array of objects with lodash?
我正在使用IE 11
我有一個對象數組,我想通過一個存儲在稱為“程序”的數組中的稱為“程序”的屬性對對象數組進行分組。 我能夠使用lodash,但我認為我用錯了,因為結果未按分組顯示。
這是我的代碼:
var programs = ['ATR','QTR','STR'];
axios.get("https://my-json-server.typicode.com/isogunro/jsondb/Programs").then(function(response) {
groupProgram(response.data);
})
.catch(function (error) {
console.log(error+"log");
});
function groupProgram(data){
var newProgram = [];
_.groupBy(data, function(item){
for (var i=0; i<programs.length; i++){
if (programs[i] == item.program){
newProgram.push(item);
}
}
});
return newProgram;
}
我最終將使用結果在Vuejs中生成一個表。 這是筆
任何幫助將非常感激。
謝謝!
您可以使用Array.reduce (不帶lodash):
axios.get("https://my-json-server.typicode.com/isogunro/jsondb/Programs").then(function(response) { const groupped = groupProgram(response.data); console.log(groupped); }) .catch(function(error) { console.log(error + "log"); }); function groupProgram(data) { const result = data.reduce((acc, curr) => { acc[curr.program].push(curr); return acc; }, { 'ATR': [], 'QTR': [], 'STR': [], }); return result; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.0/axios.min.js"></script>
編寫代碼的方式是,將groupBy函數用作forEach函數並自己操作數據(如果使用forEach,則可以)。 要使用groupBy功能,您需要更多類似的東西:
var programs = ['ATR','QTR','STR'];
axios.get("https://my-json-server.typicode.com/isogunro/jsondb/Programs").then(function(response) {
var groupedData = groupProgram(response.data);
console.log(groupedData);
})
.catch(function (error) {
console.log(error+" log");
});
function groupProgram(data){
return _.groupBy(data, 'program');
}
當然,要對其執行操作,通常會將其與其他功能鏈接在一起。 您可能會發現,根據要對數據進行的處理,使用reduce,map和類似的函數可以更輕松地過渡到更“現代”的ngRx方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.