jquery 根据id去找 json中list的数据

 我来答
oOguestOo
2016-06-02 · TA获得超过2149个赞
知道小有建树答主
回答量:295
采纳率:66%
帮助的人:408万
展开全部

查找对象所有的属性,如果找到对象,递归;如果找到数组,检查每个元素,看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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式