Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.05.2019, 22:37
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Как реализовать вариации?
Добрый день. У меня есть массив с вариациями товаров:
Array
(
    [0] => {"item_id":19,"item_image":"","item_variation":{"steklo":"ударопрочное","material":"металл"},"item_price":"110"}
    [1] => {"item_id":20,"item_image":"","item_variation":{"steklo":"обычное","material":"металл"},"item_price":"130"}
    [2] => {"item_id":21,"item_image":"","item_variation":{"steklo":"ударопрочное","material":"пластик"},"item_price":"150"}
    [3] => {"item_id":22,"item_image":"","item_variation":{"steklo":"ударопрочное","material":"дерево"},"item_price":"160"}
    [4] => {"item_id":23,"item_image":"","item_variation":{"steklo":"обычное","material":"пластик"},"item_price":"175"}
    [5] => {"item_id":24,"item_image":"","item_variation":{"steklo":"обычное","material":"дерево"},"item_price":"199"}
)

Я вывожу два блока вариантов:
по стеклу: обычное, ударопрочное
по материалу: дерево, пластик, металл

В данном случае получаем 6 вариантов.
(в перспективе, блоков вариантов, а значит вариаций товаров может быть гораздо больше)
Подайте идею, как на фронте реализовать следующее:
Покупатель сначала выбирает стекло, затем материал. В зависимости от того, какая комбинация выбрана, получаем item_id, item_image, item_price.

Я предполагаю, что данные можно выводить инлайновыми скриптами. Однако, не совсем понимаю в каком виде хранить данные. Если выводить через json, то выглядит не очень компактно:
<script type='text/javascript'>
/* <![CDATA[ */
var DATA = {"variable":["{\"item_id\":19,\"item_image\":\"\",\"item_variation\":{\"steklo\":\"\u0443\u0434\u0430\u0440\u043e\u043f\u0440\u043e\u0447\u043d\u043e\u0435\",\"material\":\"\u043c\u0435\u0442\u0430\u043b\u043b\"},\"item_price\":\"110\"}","{\"item_id\":20,\"item_image\":\"\",\"item_variation\":{\"steklo\":\"\u043e\u0431\u044b\u0447\u043d\u043e\u0435\",\"material\":\"\u043c\u0435\u0442\u0430\u043b\u043b\"},\"item_price\":\"130\"}","{\"item_id\":21,\"item_image\":\"\",\"item_variation\":{\"steklo\":\"\u0443\u0434\u0430\u0440\u043e\u043f\u0440\u043e\u0447\u043d\u043e\u0435\",\"material\":\"\u043f\u043b\u0430\u0441\u0442\u0438\u043a\"},\"item_price\":\"150\"}","{\"item_id\":22,\"item_image\":\"\",\"item_variation\":{\"steklo\":\"\u0443\u0434\u0430\u0440\u043e\u043f\u0440\u043e\u0447\u043d\u043e\u0435\",\"material\":\"\u0434\u0435\u0440\u0435\u0432\u043e\"},\"item_price\":\"160\"}","{\"item_id\":23,\"item_image\":\"\",\"item_variation\":{\"steklo\":\"\u043e\u0431\u044b\u0447\u043d\u043e\u0435\",\"material\":\"\u043f\u043b\u0430\u0441\u0442\u0438\u043a\"},\"item_price\":\"175\"}","{\"item_id\":24,\"item_image\":\"\",\"item_variation\":{\"steklo\":\"\u043e\u0431\u044b\u0447\u043d\u043e\u0435\",\"material\":\"\u0434\u0435\u0440\u0435\u0432\u043e\"},\"item_price\":\"199\"}"]};
/* ]]> */
</script>


Мне посоветовали использовать Set. Но я не совсем понимаю как это работает.
Ответить с цитированием
  #2 (permalink)  
Старый 13.05.2019, 23:10
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Янковиц
Мне посоветовали использовать Set.
Здесь можно обойтись массивом, вы же сами пишете, что это массив!

Сообщение от Янковиц
Однако, не совсем понимаю в каком виде хранить данные
Так вы сами написали, что в JSON, только можно в более читаемом виде
var data = [
    { item_id: 19, item_image: "", item_variation: { steklo: "ударопрочное", material: "металл" }, item_price: 110 },
    { item_id: 20, item_image: "", item_variation: { steklo: "обычное", material: "металл" }, item_price: 130 },
    { item_id: 21, item_image: "", item_variation: { steklo: "ударопрочное", material: "пластик" }, item_price: 150 },
    { item_id: 22, item_image: "", item_variation: { steklo: "ударопрочное", material: "дерево" }, item_price: 160 },
    { item_id: 23, item_image: "", item_variation: { steklo: "обычное", material: "пластик" }, item_price: 175 },
    { item_id: 24, item_image: "", item_variation: { steklo: "обычное", material: "дерево" }, item_price: 199 }
];


И уже дальше работать с этим массивом.

P. S. Вы слышали или читали о glass?

Последний раз редактировалось Malleys, 13.05.2019 в 23:14.
Ответить с цитированием
  #3 (permalink)  
Старый 14.05.2019, 00:37
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Самый продуктивный метод, создание ваших вариаций на основе битовых масок.
Используя битовые операции для сравнения и поиска
Вы можете одним числом описать все вариации продукта
Ответить с цитированием
  #4 (permalink)  
Старый 14.05.2019, 09:55
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Боковая навигация для LandingPage как реализовать? Black_Star jQuery 4 21.02.2017 21:37
Как реализовать проверку текстового поля? Валерий1996 Общие вопросы Javascript 3 26.08.2015 13:27
Как реализовать динамичное добавление тегов modelfak23 jQuery 1 19.06.2015 14:27
Как правильно реализовать такой функционал? Julian Общие вопросы Javascript 3 16.01.2015 12:34
как реализовать связные списки? br1an jQuery 0 27.06.2013 06:11