2017-04-17 66 views
0

我有一個是動態生成的,並且具有結構JSON對象在JSON可變組鍵/值,如下所示:提取使用jQuery

[ 
 
    {id:"1", static1:"aa", var1:"1", var2:"2", var3:"3", static2:"hello"}, 
 
    {id:"2", static1:"bb", var1:"1", var2:"2", var3:"3", static2:"hello"}, 
 
    {id:"3", static1:"cc", var1:"1", var2:"2", var3:"3", static2:"hello"}, 
 
    {id:"4", static1:"dd", var1:"1", var2:"2", var3:"3", static2:"hello"}, 
 
    {id:"5", static1:"ee", var1:"1", var2:"2", var3:"3", static2:"hello"} 
 
]

靜態密鑰(例如,「static1」,「static2」)將始終存在。但是可以有任意數量的可變鍵(例如,「var1」,「var2」等等)。這些變量鍵總是以「static1」鍵和「static2」開頭。

說了這麼多,什麼是最高效的方法來提取所有變量的鍵/值從使用jQuery JSON對象?只使用核心jQ庫。

+1

'這些可變密鑰將始終由鑰匙「static1」來之前和之後「static2」「 - 這是不是真的 - 在對象鍵是無序的。 – tymeJV

+1

這甚至不是有效的JSON數據 –

+1

...這聽起來像你說會有具有相同名稱('var1','var2'),多個密鑰的唯一的顯着特徵是在'static'密鑰他們遵循 - 然而tymeJV指出了這裏的主要問題,此外,你不能有重複的鍵。看起來你用嵌套對象會好得多。另外,有效的JSON假定你的密鑰被包裹在引號中。 – Santi

回答

0

我會使用反射來遍歷對象的屬性

for (var property in object) { 
     if (object.hasOwnProperty(property)) { 
      if(property.search("static") > -1) { 
       // extract the property 
       var pieceOfData = object[property]; 
       // do what you gotta do 
      } 
     } 
    } 
1

如果ID,static1 & static2是固定的,可變數據長度將對象長度 - 3;然後通過它循環。

var arr = [ 
    {id:"1", static1:"aa", var1:"1", var2:"2", var3:"3", static2:"hello"}, 
    {id:"2", static1:"bb", var1:"1", var2:"2", var3:"3", static2:"hello"}, 
    {id:"3", static1:"cc", var1:"1", var2:"2", var3:"3", static2:"hello"}, 
    {id:"4", static1:"dd", var1:"1", var2:"2", var3:"3", static2:"hello"}, 
    {id:"5", static1:"ee", var1:"1", var2:"2", var3:"3", static2:"hello"} 
    ] 

    var obj = {}; 
    var size = 0; 
    var varLength = 0; 
    for(var i = 0; i < arr.length; i++) { 
    obj = arr[i]; 
    size = Object.keys(obj).length; 
    varLength = size - 3; 
    for(var j=1; j <= varLength; j++) { 
     var varData = obj["var"+j]; 
     console.log(varData); 
     //Do your work here 
    } 
    } 

Plunker網址https://plnkr.co/edit/h3xHNXq9IhVJpLGZ4N8H?p=info