Сколько предметов вам нужно в ваших заказах?Вы можете безопасно сортировать 10 000 элементов в массиве Javascript без особых проблем со скоростью.Почему бы вам вместо этого не работать с реальным массивом?
Вы даже можете добавить в него пользовательские свойства, примерно такие, как
var products = [...];
products.findById = function(id) {
for (var i=0, len=this.length; i<len; i++) {
if (id == this[i].id) return this[i];
}
return null;
};
alert( products.findById(103).price ); // -> 119
, и добавить предопределенные сортировщики, такие как
products.sortById = function() {
this.sort(function(a,b) {
return a.id - b.id;
});
};
products.sortById(); // sort array by product id
** РЕДАКТИРОВАТЬ **
На вашей стороне PHP вы можете получить что-то вроде:
$products = array(
2 => array( 'id' => 2, ... ),
103 => array( 'id' => 103, ... ),
1 => array( 'id' => 1, ... ),
);
// get a JSON array
$jsonArray = json_encode(array_values($products));
вернет то, что вам нужно.
** ПРИМЕЧАНИЕ **
Вы не должны явно устанавливать индексы при добавлении новых элементов в ваш массив.Используйте функцию массива push
, например
products.push({id:123, price:200.49, quantity:1, thumb:'/path/to/file'});
Удаление элемента немного сложнее, но что-то вроде:
products.removeById = function(id) {
for (var i=0, len=this.length; i<len; i++) {
if (id == this[i].id) return this.splice(i, 1)[0];
}
return null;
};
products.removeById(123); // -> returns the removed element! or null if nothing was removed
См. Демонстрацию здесь (используйте инструменты разработчика Chrome для вывода на консоль).