У меня есть ответ в следующем формате после выполнения groupby в запросе solr. Я использую Solr версии 3.5Изменение имени ключей при создании массива
"grouped":{
"channel_id":{
"matches":48,
"ngroups":26,
"groups":[{
"groupValue":"204",
"doclist":{"numFound":1,"start":0,"docs":[
{
"channel_name":"ZeeTv",
"channel_num":4,
"title":"The Name",
"channel_id":"204"
}},
{
"groupValue":"166",
"doclist":{"numFound":2,"start":0,"docs":[
{
"channel_name":"Sony",
"channel_num":2,
"title":"The Name",
"channel_id":"166",
{
"channel_name":"Sony",
"channel_num":2,
"title":"The Puzzle",
"channel_id":"166"
}}]}}
Я принимаю ответ в массив следующим образом:
for(var chl in data.grouped.channel_id.groups) {
config['playlist'].push(data.grouped.channel_id.groups[chl]['doclist']['docs']);
}
Таким образом, индивидуальный массив каждого groupValue
формируется. Struture из массива:
"0"=>{"0"=>"value"},"1"=>{"0"=>"result1","1"=>"result2"}
Но я хочу, чтобы изменить кодовое имя, т.е. «0», «1» в groupValue
от ответа при создании массива, так что я могу сделать config['playlist']['166']
проверить все для этого channel_id
из массива. Это можно сделать, и если да, то как. Я ожидаю следующее:
"204"=>{"0"=>"value"},"166"=>{"0"=>"result1","1"=>"result2"}
Кроме того, если это возможно может запрос Solr сделать так, чтобы channel_num
в ответ приходит в порядке возрастания т.е. первый результат для channel_num 2, а затем 4. Я сделал groupby:channel_id
Ваш второй код недействителен javascript вне firefox. Кроме того, во всех циклах для каждого цикла отсутствует проверка 'hasOwnProperty'. –
Спасибо, что первый кодовый блок работает для меня как ожидалось – user850234
Вы не должны использовать 'for' ...' in' on массивы. Используйте 'len = data.grouped.channel_id.groups.length; для (var chl = 0; chl