Недавно я выполнял тонны Ajax и работал со многими объектами моего домена, которые конвертировали их аналоги в JavaScript. Я обнаружил, что пишу несколько функций, которые перебирают массивы объектов для поиска по значениям свойств. Я решил написать простой плагин jQuery, который позволил бы мне искать массив примитивных или сложных типов.
Примечание. Это моя первая попытка написания плагина jQuery. Я не уверен, правильно ли я поступил. Моя главная задача - эффективность и межбраузерная поддержка логики поиска.
Спасибо!
Код для критики:
$(function() {
$.indexOfArray = function (search, array) {
var keys = [];
var index = -1;
var primitiveType = true;
for (var propertyName in search) {
primitiveType = false;
keys.push(propertyName);
}
if ($.isArray(array)) {
for (var a = 0; a < array.length; a++) {
var match = 0;
if (primitiveType && array[a] == search) {
index = a;
break;
}
else if (!primitiveType) {
for (var b = 0; b < keys.length; b++) {
if (search[keys[b]] == array[a][keys[b]]) {
match++;
}
}
if (match == keys.length) {
index = a;
break;
}
}
}
}
return index;
}
});
Простой пример использования (он также работает с массивами примитивного типа, такими как строки или целые числа):
var testArray = [{Id:1, FirstName: 'John'}, {Id:2, FirstName: 'Jake'}, {Id:2, FirstName: 'Jason'}];
var selectedPerson = testArray[$.indexOfArray({Id:2}, testArray)];