2016-07-03 3 views
0

У меня есть объект javascript, который я создаю из вызова базы данных. Он будет иметь несколько элементов, и мне нужно будет иметь возможность ссылаться на один ключ/значение (moduleID).Поиск данных в объекте Javascript

success: function(data) { 

     // Define our local vars 
     var moduleIncludes = Array(); 

     // Loop over each of the users selected modules and put them into an array 
     $(data).find('modules').each(function() { 

      // Push module JS file names to an array 
      moduleIncludes.push($(this).find('moduleJSFile').text()); 

      // Create an object of module data 
      moduleData.push({ 
       moduleID: $(this).find('moduleID').text(), 
       moduleRow: $(this).find('row').text(), 
       moduleColumn: $(this).find('col').text(), 
       moduleName: $(this).find('moduleName').text(), 
       moduleDescription: $(this).find('moduleDescription').text(), 
       moduleJSFile: $(this).find('moduleJSFile').text(), 
       moduleIcon: $(this).find('moduleIcon').text(), 
       moduleStartingXsize: $(this).find('startingXsize').text(), 
       moduleStartingYsize: $(this).find('startingYsize').text(), 
       moduleResizeLocked: $(this).find('resizeLocked').text(), 
       moduleMinXsize: $(this).find('minXsize').text(), 
       moduleMinYsize: $(this).find('minYsize').text() 
      }); 
     }); 

     // Using our array of modules, fetch them to include them into the page 
     $.getMultiScripts(moduleIncludes, 'includes/js/modules/').done(function() { 
      // All of the modules have been included. Trigger the grid functionality. 
      renderCanvas(); 
     }); 
    } 
}); 

Вместо того, чтобы перебрать каждого, чтобы найти то, что я ищу, есть способ, которым я могу назвать объект со стороны moduleID вместо момента его уникальность?

Например, если я хочу видеть все данные, относящиеся к moduleId 1, я хотел бы иметь возможность просто искать объект по ID, а не зацикливать его, чтобы найти его.

Могу ли я достичь этого в своем творении?

enter image description here

+0

Можете ли вы показать пример формата 'data'? Если у вас есть массив, вам нужно пройти через него (или использовать '.find()' или '.filter()'), но если у вас есть объект, вы можете обратиться к свойствам по имени ключа. – nnnnnn

+0

Данные представляют собой XML-строку, переданную из хранимой процедуры. Объекты создаются отлично, как вы можете видеть на изображении, но мне нужно как-то определить их по идентификатору. – SBB

ответ

1

может быть, что вам нужно, это больше похоже на:

moduleIncludes = {}; 
moduleIncludes[Id] = {"moduleRow":$(this).find('row').text() ...}; 

делать, как это, вы будете иметь возможность запросить конкретный модуль непосредственно из ID.

+0

Это то, что мне нужно. Теперь я могу сказать moduleIncludes [1] .moduleRow – SBB

0

Вы можете использовать функцию filter() для поиска объекта.

Документ в w3schools.

Пример: Фильтр по идентификатору объекта

function matchId(id) { 
    return moduleData.moduleID == id; 
} 

data = moduleData.filter(matchId); 

Это является более простым, чем вы написать цикл с for или foreach.

Goodluck и получайте удовольствие!

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