使用jQuery在JSON中提取一组变量键/值

时间:2017-04-17 14:59:48

标签: jquery json

我有一个动态生成的JSON对象,其结构如下所示:

[
  {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库。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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
            }
        }
    }