查询Javascript对象(图)

nev*_*evf 1 javascript linq object

我想在Javascript对象中搜索特定的键和值.恩.

var obj = { zulu: { a: 3, b: "b3", d: true } };
Run Code Online (Sandbox Code Playgroud)

找出obj是否包含a有价值的键3.该对象具有嵌套对象和嵌套对象数组,a: 3可以在对象图中的任何位置和多个位置.

所以我不能简单测试:if ( zulu.a == 3 )因为a可以在对象图中的多个位置.

我认为linq.js看起来非常有前景,但是在查询对象时,它似乎并没有下降到嵌套对象中.那说我是linq的完全新手,可能会遗漏一些东西.

我可以(并且有)编写代码来迭代处理这个的对象图,但是我想找到一个像linq这样的通用库,它可以让我对任何JS对象执行即席查询.

小智 5

我是linq.js的创造者.http://linqjs.codeplex.com/

也许你可以使用遍历嵌套图的"CascadeDepthFirst".

var obj = { zulu: { a: 3, b: "b3", d: true } };
var query = Enumerable.From(obj)
    .CascadeDepthFirst(function (kvp)
    {
        return (kvp.Value instanceof Object) ? kvp.Value : []
    });

// query.ToArray() is
[0] = {Key: "zulu", Value: { a: 3, b: "b3", d: true }}
[1] = {Key: "a", Value: 3}
[2] = {Key: "b", Value: "b3"}
[3] = {Key: "d", Value: true}

// arrangement
var exists = query.Any("$.Key == 'a' && $.Value == '3'");
Run Code Online (Sandbox Code Playgroud)