jquery 根据id去找 json中list的数据
1个回答
展开全部
查找对象所有的属性,如果找到对象,递归;如果找到数组,检查每个元素,看id是不是所找的id。
假设数组里不会再嵌套数组了,如果有这种情况还要递归,原理一样的。
var json = '{"attrA":1,"listA":[{"id":1,"a":1,"b":1},{"id":2,"a":2,"b":3},{"id":3,"a":3,"b":3}],"listB":{"c":4,"d":[{"id":4,"a":4,"b":4},{"id":5,"a":5,"b":5}]}}';
var obj = JSON.parse(json);
function findDataById(obj, id){
var res = null;
for(var i in obj){
if(Array.isArray(obj[i])){
res = findDataInArr(obj[i], id);
}else if(obj[i] && typeof obj[i] === "object"){
res = findDataById(obj[i], id);
}else{
//is attribute
}
if(res){
return res;
}
}
return null;
}
function findDataInArr(arr, id){
for(var i = 0; i < arr.length; i++){
if(arr[i].id === id){
return arr[i];
}
}
return null;
}
console.log(findDataById(obj, 2));
console.log(findDataById(obj, 3));
console.log(findDataById(obj, 4));
console.log(findDataById(obj, 8));
造了一个稍微复杂一点的对象用来测试:
更多追问追答
追问
我的还是没有取到
追答
能不能发一下你的json
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询