簡體   English   中英

如何根據條件將一個JS數組存儲到不同的數組中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM