Как правильно организовать фильтр для выбора бренда и цены?
<div class="wrapper">
<h3>Фильтр</h3>
</div>
<hr>
<h3>Каталог</h3>
<div class="catalog">
<div>Lenovo цена 8000</div>
<div>Asus цена 8000</div>
<div>MSI цена 20000</div>
<div>Asus цена 15000</div>
<div>Asus цена 9000</div>
<div>HP цена 17000</div>
</div>
Как правильно организовать фильтр для выбора бренда и цены?
Не самый оптимальный вариант, но все же.
var products = [{
name: "HP",
price: 8000
},
{
name: "Asus",
price: 8000
},
{
name: "MSI",
price: 20000
},
{
name: "Asus",
price: 15000
},
{
name: "Asus",
price: 9000
},
{
name: "HP",
price: 17000
},
]
//----------------------------------------------------------------
var unq = [] // Только наименование
// Оставляет массив продуктов
unq = products.map(item => item.name)
.filter((value, index, self) => self.indexOf(value) === index)
var sel = $('select')
var cat = $('.catalog')
// Селект из уникальных продуктов
$.each(unq, function(i, p) {
sel.append('<option value="' + p + '">' + p + '</option>')
})
// Построение каталога из всех продуктов
$.each(products, function(i, p) {
// Создание нового элемента для продукта
let div = $('<div/>')
.attr({
class: 'item',
"data-prod-name": p.name,
"data-price": p.price
})
.text(p.name + ' цена ' + p.price);
cat.append(div);
})
// Если есть изменения в селекте
sel.on('change', function(e) {
var filter = $(this).val()
//----------------------------------------------------------------
cat.children().each(function(i) {
if (filter !== "All" && filter !== $(this).attr('data-prod-name')) {
$(this).hide()
} else {
$(this).show()
}
})
})
//----------------------------------------------------------------
// Филтр по цене
$('.price').keypress(function(e) {
if (e.which == 13) {
var val = $(this).val()
cat.children().each(function(i) {
//--------------------------------------------
// Mathjs вроде они лучше, чем обычный eval..
//--------------------------------------------
if (!math.eval($(this).attr('data-price') + val)) {
$(this).hide()
} else if (val.length === 0) {
// Фильтрует только в случае Only if nothing was filtered
// когда была предыдущая фильтрация
// Выбор из селекта
sel.trigger('change')
} else {
$(this).show()
}
})
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/5.0.1/math.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="" id="">
<option value="All">All</option>
</select>
<input type="text" class="price" name="byprice" placeholder="filter by price" title="Filter by: > | >= | < | <= | == | ==8000 [Enter]">
<span>Filter by: > | >= | < | <= | == | ==8000 [Enter]</span>
<hr>
<h1>Каталог</h1>
<div class="catalog">
</div>
<hr>
P.S.: На весь экран.
Создал массив с путями до файлов и создал коллекцию в которую поместил массивДалее написал цикл, который копирует содержимое файлов и дает...
Всем привет! Проблема такая: 18 июня у меня сцена в мобильной игре грузилась за 1-2 секунды, а вот 30 июня сцена стала грузиться 5-6-7 секундКод почти...