2017-04-11 58 views
0

我有以下JSON格式,它是動態的,即在任何時候子項數都可以不同。對於複雜對象中的密鑰,存在下劃線JavaScript查找值

var Obj = { 
    "name": "A", 
    "count": 13, 
    "children": [{ 
     "name": "B", 
     "count": 24, 
     "children": [{ 
      "name": "C", 
      "count": 35, 
      "children": [], 
      "msg": null 
     },{ 
      "name": "D", 
      "count": 35, 
      "children": [], 
      "msg": "Err" 
     }] 
    }] 
} 

我們怎樣才能在整個對象Obj中發現msg是否爲空?我試圖使用循環對象,但這種格式不一致,因爲對象中的children數組是動態的。我是新來的下劃線,是否有無法檢查Underscore JavaScript?

+0

您是否正在尋找純js解決方案還是隻是underscore.js解決方案? –

+0

什麼都可以 – user521024

+0

你想讓你的函數返回什麼?它是某種具有屬性'name'的對象數組,其中的消息爲null或類似的東西? –

回答

0

在純JS,你可以使用for...in循環,如果與主要msg和值null屬性沒有被找到,否則將返回false創建遞歸函數將返回true

var Obj = {"name":"A","count":13,"children":[{"name":"B","count":24,"children":[{"name":"C","count":35,"children":[],"msg":null},{"name":"D","count":35,"children":[],"msg":"Err"}]}]} 
 

 
function notNull(obj) { 
 
    var result = true; 
 
    for (var i in obj) { 
 
    if (i == 'msg' && obj[i] === null) result = false; 
 
    else if (typeof obj[i] == 'object') result = notNull(obj[i]); 
 
    if (result == false) break; 
 
    } 
 
    return result; 
 
} 
 

 
console.log(notNull(Obj))

0

是強調圖書館,可以這樣幫忙: -

_.each(Obj.children,function(item){ //it will take item one by one and do 
            // processing 
    if(item.msg){ 
     //DO YO THING 
    } 
    return; 
}) 
1

如果我理解正確你的問題......

var anyMsgNotNull = (_.filter(Obj.children, function(child) { 
    return (child.msg !== null); 
    })).length > 0; 

,如果有任何味精元素不爲​​空這將返回true,否則將返回false。