[英]Angular JS: Store objects from one array to different arrays/services
[英]How to store one JS array into different arrays based on condition
我有一個javscript數組變量,它是每個具有對象值的數組元素
{"ID":10075,"SPECIALIZATIONID":"17","PRESPCIALIZATIONID":11,"GROUPID":1}
以及整個JSON.stringify值,如下所示...
"[{"ID":10075,"SPECIALIZATIONID":"17","PRESPCIALIZATIONID":11,"GROUPID":1},
{"ID":10076,"SPECIALIZATIONID":"17","PRESPCIALIZATIONID":14,"GROUPID":1},
{"ID":-1,"SPECIALIZATIONID":"17","PRESPCIALIZATIONID":0,"GROUPID":0},
{"ID":10077,"SPECIALIZATIONID":"17","PRESPCIALIZATIONID":11,"GROUPID":2},
{"ID":-1,"SPECIALIZATIONID":"17","PRESPCIALIZATIONID":0,"GROUPID":0},
{"ID":10078,"SPECIALIZATIONID":"17","PRESPCIALIZATIONID":92,"GROUPID":3}]"
如何基於ID值將-1存儲在不同數組中的數組值,我的輸出應為:-
第一個具有2條記錄的ID為:-10075,10076的數組
具有1條記錄的第二個數組,其ID為:-10077
具有1條記錄的第三個數組,其ID為:-10078
看起來您想要GROUPID不同於0的那些
function arrayParse(value){
var result = [];
value.forEach(function (v) {
if (v.GROUPID) {
if(!result[v.GROUPID])
result[v.GROUPID] = [];
result[v.GROUPID].push(v.ID);
}
});
return result;
}
您可以將項目分組,並用ID === -1
的項目分隔。 該建議適用於結果集和實際組的組數組。
您可以使用Array#forEach
thisArg
var array = [{ ID: 10075, SPECIALIZATIONID: "17", PRESPCIALIZATIONID: 11, GROUPID: 1 }, { ID: 10076, SPECIALIZATIONID: "17", PRESPCIALIZATIONID: 14, GROUPID: 1 }, { ID: -1, SPECIALIZATIONID: "17", PRESPCIALIZATIONID: 0, GROUPID: 0 }, { ID: 10077, SPECIALIZATIONID: "17", PRESPCIALIZATIONID: 11, GROUPID: 2 }, { ID: -1, SPECIALIZATIONID: "17", PRESPCIALIZATIONID: 0, GROUPID: 0 }, { ID: 10078, SPECIALIZATIONID: "17", PRESPCIALIZATIONID: 92, GROUPID: 3 }], grouped = []; array.forEach(function (o) { if (!this.group || o.ID === -1) { this.group = []; grouped.push(this.group); } if (o.ID !== -1) { this.group.push(o); } }, { group: null }); console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }
或者關閉Array#reduce
的回調中的group
變量。
var array = [{ ID: 10075, SPECIALIZATIONID: "17", PRESPCIALIZATIONID: 11, GROUPID: 1 }, { ID: 10076, SPECIALIZATIONID: "17", PRESPCIALIZATIONID: 14, GROUPID: 1 }, { ID: -1, SPECIALIZATIONID: "17", PRESPCIALIZATIONID: 0, GROUPID: 0 }, { ID: 10077, SPECIALIZATIONID: "17", PRESPCIALIZATIONID: 11, GROUPID: 2 }, { ID: -1, SPECIALIZATIONID: "17", PRESPCIALIZATIONID: 0, GROUPID: 0 }, { ID: 10078, SPECIALIZATIONID: "17", PRESPCIALIZATIONID: 92, GROUPID: 3 }], grouped = array.reduce(function (group) { return function (r, o) { if (!group || o.ID === -1) { group = []; r.push(group); } if (o.ID !== -1) { group.push(o); }; return r; }; }(), []); document.write('<pre>' + JSON.stringify(grouped, 0, 4) + '</pre>'); console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }
在兩種情況下,結果都是一個新數組,其中包含給定數據的分組項目的數組。 ID === -1
的項目不包括在內。
您可以使用Array.prototype.filter()創建一個函數,該函數將返回按組ID過濾的數組。
var array = [{"ID":10075,"SPECIALIZATIONID":"17","PRESPCIALIZATIONID":11,"GROUPID":1}, {"ID":10076,"SPECIALIZATIONID":"17","PRESPCIALIZATIONID":14,"GROUPID":1}, {"ID":-1,"SPECIALIZATIONID":"17","PRESPCIALIZATIONID":0,"GROUPID":0}, {"ID":10077,"SPECIALIZATIONID":"17","PRESPCIALIZATIONID":11,"GROUPID":2}, {"ID":-1,"SPECIALIZATIONID":"17","PRESPCIALIZATIONID":0,"GROUPID":0}, {"ID":10078,"SPECIALIZATIONID":"17","PRESPCIALIZATIONID":92,"GROUPID":3}]; function getGroup(groupId){ return array.filter(function(object){ return object.GROUPID === groupId; }); } var group0 = getGroup(0); var group1 = getGroup(1); var group2 = getGroup(2); console.log(group2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.