Alasql选择具有未知索引的数组的arrary

时间:2016-04-26 11:46:09

标签: alasql

假设我有这个结构数据

data =[ 
 {
"id":1,
"link":[
        {
        "id":3
        },
        {
        "id":1
        },
        {
        "id":2
        }
        ]
},
{
"id":2,
"link":[
         {
          "id":30
          },
         {
         "id":11
         },
         {
         "id":22
         }
         ]

}
]

我想查看我的结构是否与id=11

有链接
"SELECT * FROM ? WHERE link->[1]->id=11" 

工作,但因为我已经知道我必须检查索引1.如何签入所有索引?

2 个答案:

答案 0 :(得分:2)

SEARCH函数如果完全实现则会很好

alasql('SEARCH / link / WHERE(id=11) .. / .. FROM ?',[data]);

但parrent ..选择器尚未实现。

我建议做一个(不是完全优雅的)用户定义函数:

alasql.fn.deepSearch = function(id, obj){
    return alasql("SEARCH / link / WHERE(id=?) FROM ?", [id, [obj]]).length
}

alasql('SELECT * FROM ? WHERE deepSearch(11,_)',[data]);

答案 1 :(得分:1)

正确的代码是

alasql('SEARCH / AS @a link / WHERE(id=11) @a FROM ?',[data]);

此处AS @a将当前元素保存到变量@a中,第二个@a检索它。