2015-07-29 2 views
0

Я пытаюсь создать массив массивов для таблицы (используя титры из dynaTree, внутри функции onSelect). Я могу успешно извлечь заголовки dynatree из узлов, но независимо от того, что я делаю, я не могу создать массив массивов из этих значений.jquery map и массив массивов с dynatree

только массив заголовков строк ... базовая линия возврата игнорирует скобки и сращивание массива?

 onSelect: function(flag, node) 
     { 
      var selectedNodes = node.tree.getSelectedNodes(); 

      var selectedKeys = $.map(selectedNodes, function(node) 
      { 
       return node.data.id; 
      }); 

      var selectedTitles = $.map(selectedNodes, function(node) 
      {   
       var name = node.data.title; 
       name = name.substring(0,4); 

       if(name == 'Room') 
       { 
        var floor = node.getParent(); 
        var building = floor.getParent(); 

        //PROBLEM CODE(not creating arrays): 
        return([node.data.title,floor.data.title,building.data.title]);     
       } 
      }); 

      console.log("Selected Titles: " + selectedTitles); 

     }, 

ТЕКУЩИЕ РЕЗУЛЬТАТЫ:

Selected Titles: Room 115,Floor 1,Chemistry, Room 116,Floor 01,Chemistry, 
Room 114,Floor 01,Chemistry, Room 113,Floor 01,Chemistry, Room 112,Floor 
01,Chemistry, Room 110,Floor 01,Chemistry, Room 109,Floor 01,Chemistry, Room 
109A,Floor 01,Chemistry 

ЖЕЛАЕМЫЕ РЕЗУЛЬТАТЫ:

Selected Titles: [Room 115,Floor 1,Chemistry],[Room 116,Floor 01,Chemistry], 
[Room 114,Floor 01,Chemistry],[Room 113,Floor 01,Chemistry],[Room 112,Floor 
01,Chemistry],[Room 110,Floor 01,Chemistry],[Room 109,Floor 01,Chemistry], 
[Room 109A,Floor 01,Chemistry] 
+0

Вы можете предоставить jsfiddle с данными образца? а также попытайтесь удалить 'join (", ")'. –

+0

Не используйте оповещение, чтобы проверить результирующий файл. Запишите его на консоль. Не знаете, почему вам нужно использовать 'splice()', когда вы не меняете исходную структуру. – charlietfl

+0

Наверняка вы хотите 'return [node.data.title, floor.data.title, building.data.title]'? –

ответ

0

Я нашел решение !! Я сделал все в предыдущих комментариях и не видел никаких изменений ... затем попытался добавить еще один контейнер массива arround в оператор return.

Благодаря charlietfl & Джон Грин для recomending журнала консоли и удаления строки, не изменяя этот неряшливый код, структура не будет как видимым массив массивов.

return([[node.data.title,floor.data.title,building.data.title]]); 

Я не знаю, почему метод карты запрашивает содержащий массив? ... но работает по назначению!

Смежные вопросы