Często potrzebuję przeszukiwać tablicę javascript zawierającą obiekty. Chcę wyszukać obiekt w tablicy, która ma dopasowanie właściwości. Na przykład, przeszukując tablicę obiektów Person dla miejsca, w którym identyfikator/klucz osoby === "ABC123"Czy istnieje lepszy sposób wyszukiwania tablicy JavaScript niż przy użyciu jQuery?
Można to zrobić całkiem łatwo za pomocą jQuery za pomocą metody $ .each, na której się zdecydowałem. Możesz zobaczyć przykład tutaj w jsFiddle. http://jsfiddle.net/johnpapa/EJAFG/
Zastanawiam się, czy ktoś inny znalazł szybszy i/lub lepszy sposób na zrobienie tego?
var Person = function(code, name) {
this.code = code;
this.name = name;
};
var people = [
new Person("ABC123", "Tooth Fairy"),
new Person("DEF456", "Santa Claus"),
new Person("PIR000", "Jack Sparrow"),
new Person("XYZ987", "Easter Bunny")
];
var utils = {};
// Could create a utility function to do this
utils.inArray = function(searchFor, property) {
var retVal = -1;
$.each(this, function(index, item) {
if (item.hasOwnProperty(property)) {
if (item[property].toLowerCase() === searchFor.toLowerCase()) {
retVal = index;
return false;
}
}
});
return retVal;
};
// or we could create a function on the Array prototype indirectly
Array.prototype.inArray = utils.inArray;
// let's use the prototype for now
var i = people.inArray("PIR000", "code");
$('#output').text(people[i].name);
Istnieje wiele jest pytań podobnych do tego, ale muszę jeszcze zobaczyć jedną z roztworem innej niż iteracji (tak jak ja tutaj).
Pytanie brzmi: czy istnieje lepszy sposób?
Jest podobne pytanie [tutaj] [1]. [1]: http://stackoverflow.com/questions/1144423/jquery-selectors-for-plain-javascript-objects-instead-of-dom-elements –
Patrz http://stackoverflow.com/questions/143847/best-way-to-find-an-item-in-a-javascript-array i http://stackoverflow.com/questions/237104/array-containsobj-in-javascript – j08691
@ j08691 oba te sprawdzają, czy istnieje dokładne dopasowanie obiektu. Dla tych, $ .inArray działa dobrze. Szukam wyszukiwania według klucza. –