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 ответа
Решение
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]);
Правильный код
alasql('SEARCH / AS @a link / WHERE(id=11) @a FROM ?',[data]);
Вот AS @a
сохраняет текущий элемент в переменную @a
и второй @a
получает это.