2017-07-17 5 views
0

Das ist mein Objekt und ich möchte die Anzahl der Felder in jeder Registerkarte abrufen. Ich denke, das Feld zu überspringen, wenn seine Art ein Tab dann beginnt die Felder vor der nächsten Art des Registers zu zählen ..So erhalten Sie die Anzahl jedes Felds innerhalb eines Gruppenregisterkartenobjekts

Wie auch immer, hier ist meine Aufgabe unter:

array(49) { 
     [0]=> 
     array(12) { 
     ["key"]=> 
     string(19) "field_596796ae0c4c4" 
     ["label"]=> 
     string(7) "GENERAL" 
     ["name"]=> 
     string(0) "" 
     ["_name"]=> 
     string(0) "" 
     ["type"]=> 
     string(3) "tab" 
     ["order_no"]=> 
     int(0) 
     ["instructions"]=> 
     string(0) "" 
     ["required"]=> 
     int(0) 
     ["id"]=> 
     string(10) "acf-field-" 
     ["class"]=> 
     string(3) "tab" 
     ["conditional_logic"]=> 
     array(3) { 
      ["status"]=> 
      int(0) 
      ["rules"]=> 
      array(1) { 
      [0]=> 
      array(3) { 
       ["field"]=> 
       string(19) "field_5964e9dd6df85" 
       ["operator"]=> 
       string(2) "==" 
       ["value"]=> 
       string(0) "" 
      } 
      } 
      ["allorany"]=> 
      string(3) "all" 
     } 
     ["field_group"]=> 
     int(165) 
     } 
     [1]=> 
     array(18) { 
     ["key"]=> 
     string(19) "field_5964e9206df82" 
     ["label"]=> 
     string(5) "Brand" 
     ["name"]=> 
     string(5) "brand" 
     ["_name"]=> 
     string(5) "brand" 
     ["type"]=> 
     string(8) "taxonomy" 
     ["order_no"]=> 
     int(1) 
     ["instructions"]=> 
     string(0) "" 
     ["required"]=> 
     int(1) 
     ["id"]=> 
     string(15) "acf-field-brand" 
     ["class"]=> 
     string(8) "taxonomy" 
     ["conditional_logic"]=> 
     array(3) { 
      ["status"]=> 
      int(0) 
      ["rules"]=> 
      array(1) { 
      [0]=> 
      array(3) { 
       ["field"]=> 
       string(19) "field_5964e9dd6df85" 
       ["operator"]=> 
       string(2) "==" 
       ["value"]=> 
       string(7) "regular" 
      } 
      } 
      ["allorany"]=> 
      string(3) "all" 
     } 
     ["taxonomy"]=> 
     string(8) "pa_brand" 
     ["field_type"]=> 
     string(6) "select" 
     ["allow_null"]=> 
     int(0) 
     ["load_save_terms"]=> 
     int(0) 
     ["return_format"]=> 
     string(2) "id" 
     ["field_group"]=> 
     int(165) 
     ["multiple"]=> 
     int(0) 
     } 
     [2]=> 
     array(12) { 
     ["key"]=> 
     string(19) "field_596796da0c4c5" 
     ["label"]=> 
     string(6) "LAUNCH" 
     ["name"]=> 
     string(0) "" 
     ["_name"]=> 
     string(0) "" 
     ["type"]=> 
     string(3) "tab" 
     ["order_no"]=> 
     int(2) 
     ["instructions"]=> 
     string(0) "" 
     ["required"]=> 
     int(0) 
     ["id"]=> 
     string(10) "acf-field-" 
     ["class"]=> 
     string(3) "tab" 
     ["conditional_logic"]=> 
     array(3) { 
      ["status"]=> 
      int(0) 
      ["rules"]=> 
      array(1) { 
      [0]=> 
      array(3) { 
       ["field"]=> 
       string(19) "field_5964e9dd6df85" 
       ["operator"]=> 
       string(2) "==" 
       ["value"]=> 
       string(0) "" 
      } 
      } 
      ["allorany"]=> 
      string(3) "all" 
     } 
     ["field_group"]=> 
     int(165) 
     } 
     [3]=> 
     array(15) { 
     ["key"]=> 
     string(19) "field_5964e99e6df84" 
     ["label"]=> 
     string(20) "Announced (Globally)" 
     ["name"]=> 
     string(18) "announced_globally" 
     ["_name"]=> 
     string(18) "announced_globally" 
     ["type"]=> 
     string(11) "date_picker" 
     ["order_no"]=> 
     int(3) 
     ["instructions"]=> 
     string(23) "Date globally announced" 
     ["required"]=> 
     int(0) 
     ["id"]=> 
     string(28) "acf-field-announced_globally" 
     ["class"]=> 
     string(11) "date_picker" 
     ["conditional_logic"]=> 
     array(3) { 
      ["status"]=> 
      int(0) 
      ["rules"]=> 
      array(1) { 
      [0]=> 
      array(3) { 
       ["field"]=> 
       string(19) "field_5964e9dd6df85" 
       ["operator"]=> 
       string(2) "==" 
       ["value"]=> 
       string(7) "regular" 
      } 
      } 
      ["allorany"]=> 
      string(3) "all" 
     } 
     ["date_format"]=> 
     string(4) "mmyy" 
     ["display_format"]=> 
     string(5) "MM yy" 
     ["first_day"]=> 
     int(1) 
     ["field_group"]=> 
     int(165) 
     } 

oder diesem Objekt, das ich in Javascript vereinfacht und laufen:

var productObject = [ 
    { 
     "type":"tab", 
     "value":"GENERAL" 
    }, 
    { 
     "type":"taxonomy", 
     "value":"56", 
     "label":"Brand" 
    }, 
    { 
     "type":"tab", 
     "value":"LAUNCH" 
    }, 
    { 
     "type":"text", 
     "name":"announced_ph", 
     "label":"Announced(Philippines)", 
     "value":"07072017" 
    },{ 
     "type":"text", 
     "name":"announced_global", 
     "label":"Announced(Global)", 
     "value":"09092017" 
    },{ 
     "type":"tab", 
     "value":"NETWORK" 
    },{ 
     "type":"text", 
     "name":"sim_type", 
     "label":"SIM", 
     "value":"dualnano" 
    },{ 
     "type":"text", 
     "name":"broadband_speed", 
     "label":"Broadband Speed", 
     "value":"LTE Cat6" 
    },{ 
     "type":"text", 
     "name":"broadband_speed", 
     "label":"Broadband Speed", 
     "value":"LTE Cat6" 
    } 
    ]; 

ich die Anzahl der Felder/Objekte nach einem Objekt mit einer Art von „Tab“ wissen müssen. Weil ich es für den rowspan Wert meiner Tabelle wissen muss.

Die ouput Ich sollte ich denken:

Tab "General" has 1 field 
Tab "Launch" has 2 field 
Tab "Network" has 3 field 

Dank!

Antwort

0

Schleife über das Objekt, dann überprüfen Sie, ob type gleich tab ist. Etwas wie if (productObject.type == 'tab').

Wenn es gleich Tab ist, setzen Sie eine Counter-Variable auf 0, dann erhöhen Sie sie nur, bis Sie den nächsten tab Wert erreichen.

my_counter = 0 
tab_type = '' 
for po in productObject: 
    if po['type'] == 'tab': 
     my_counter = 0 
     tab_type = po['value'] 
    my_counter += 1 

So etwas wie das.

0

die productObject benutzen, werde ich es auf dem Schlüssel basiert value

//Getting all "value" keys 
var arr = $.map(productObject,function(k,v){ 
    if(k.type == "tab"){ 
    return k.value; 
    } 
}); 

//Counting each duplicates 
var map = arr.reduce(function(prev, cur) { 
    prev[cur] = (prev[cur] || 0) + 1; 
    return prev; 
}, {}); 

//Returns JSON 
console.log(JSON.stringify(map)); 

Beispielausgabe:

{"GENERAL":1,"LAUNCH":1,"NETWORK":1} 
Verwandte Themen