2016-02-09 22 views
-1

我有一個JSON數據如下搜索對複雜對象的對象如下

{ 
    "id": "0001", 
    "fieldName": "sample1", 
    "fieldValue" "0001", 
    "subList": [ 
     { 
      "id": 1001, 
      "fieldName": "Sample Child 1", 
      "fieldValue": "1001", 
      "subList": [] 
     },{ 
      "id": 1002, 
      "fieldName": "Sample Child 2", 
      "fieldValue": "1002", 
      "subList": [] 
     } 
    ] 
} 

現在我想搜索對象的數據

+2

無效對象開始 –

+0

應該搜索什麼,返回什麼? –

+0

如果我搜索{id:「0001」}我必須得到完整的對象,如果我用1001搜索我必須得到'Sample Child Obj' –

回答

0

假設搜索對象在以往任何時候只包含一個屬性:對於

function search(s, o) { 
 
    var k = Object.keys(s)[0], r; 
 
    if (o[k] === s[k]) { 
 
     return o; 
 
    } 
 
    o.subList.some(function (a) { 
 
     r = search(s, a); 
 
     return r; 
 
    }); 
 
    return r; 
 
} 
 

 
var obj = { "id": "0001", "fieldName": "sample1", "fieldValue": "0001", "subList": [{ "id": 1001, "fieldName": "Sample Child 1", "fieldValue": "1001", "subList": [] }, { "id": 1002, "fieldName": "Sample Child 2", "fieldValue": "1002", "subList": [] }] }; 
 

 
document.write('<pre>' + JSON.stringify(search({ id: '0001' }, obj), 0, 4) + '</pre>'); 
 
document.write('<pre>' + JSON.stringify(search({ id: 1001 }, obj), 0, 4) + '</pre>');

+0

@Bergi,我會如果我可以...... –