我有一个动态生成的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库。
答案 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
}
}
答案 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
}
}
}