2016-09-10 10 views
-1

私の文書に入れ子の子があります。私は文書を見つける必要があります。子供のID: 私の文書は以下のようになります。例については入れ子の子を使って文書を見つける方法

私はこの文書を見つける方法を "PxX4EYMYVDOphx8XU" このchildren._idをしたいです。

[{ 
    "_id": "v4jdHchuogyumed7f", 
    "name": "products", 
    "children": [{ 
    "_id": "fDE1kyR081Y44aO7h", 
    "name": "Clothes", 
    "children": [{ 
     "_id": "l464EYMYVDOphx8XU", 
     "name": "Shoes", 
     "children": [{ 
     "_id": "PxX4EYMYVDOphx8XU", 
     "name": "Black Shoes" 
     }] 
    }, { 
     "_id": "gUHcdTuPxXhauIWaZ", 
     "name": "Shirts" 
    }] 
    }, { 
    "_id": "svcdrpPybHJf0KiBi", 
    "name": "Flowers", 
    "children": [{ 
     "_id": "gdEk85byoRCWxStTf", 
     "name": "Red Flowers" 
    }] 
    }] 
}] 
+0

私は配列#findIndex、 – fahad

+0

を使用していません。ネストされたオブジェクトの最後の子 '_id'が必要です。 –

+0

オブジェクトを再帰的に歩いて '_id'をテストする必要があるようです。 – Xotic750

答えて

0

あなたは再帰的にオブジェクトを歩くと、親オブジェクトを返し、その後_idと一致する必要があります。例があります。

var walk = returnExports; 
 
var x = [{ 
 
    "_id": "v4jdHchuogyumed7f", 
 
    "name": "products", 
 
    "children": [{ 
 
    "_id": "fDE1kyR081Y44aO7h", 
 
    "name": "Clothes", 
 
    "children": [{ 
 
     "_id": "l464EYMYVDOphx8XU", 
 
     "name": "Shoes", 
 
     "children": [{ 
 
     "_id": "PxX4EYMYVDOphx8XU", 
 
     "name": "Black Shoes" 
 
     }] 
 
    }, { 
 
     "_id": "gUHcdTuPxXhauIWaZ", 
 
     "name": "Shirts" 
 
    }] 
 
    }, { 
 
    "_id": "svcdrpPybHJf0KiBi", 
 
    "name": "Flowers", 
 
    "children": [{ 
 
     "_id": "gdEk85byoRCWxStTf", 
 
     "name": "Red Flowers" 
 
    }] 
 
    }] 
 
}]; 
 
var find = 'PxX4EYMYVDOphx8XU'; 
 
var children; 
 
var parent; 
 
walk(x, Object.keys, function(value, prop, object, depth) { 
 
    if (prop === 'children' && Array.isArray(value)) { 
 
    children = value; 
 
    walk.STOP; 
 
    } 
 
    if (prop === '_id' && value === find) { 
 
    parent = children.find(function(obj) { 
 
     return object._id === find; 
 
    }); 
 
    return walk.BREAK; 
 
    } 
 
}); 
 
console.log(parent);
<script src="https://rawgithub.com/Xotic750/object-walk-x/master/lib/object-walk-x.js"></script>

https://www.npmjs.com/package/object-walk-x独自のオブジェクト歩行器を書きたくない場合。

関連する問題