یک فروشگاه آنلاین مرتبسازی و فیلتر کردن محصولات خود بر اساس دستهبندیها را به شما سپرده است. شما باید تابعی بنویسید که بتواند لیست محصولات را بر اساس دستهبندیهای انتخابی کاربر و قیمت آنها (به صورت صعودی یا نزولی) فیلتر و مرتبسازی کند.
پروژه اولیه
پروژه اولیه را از این لینک دانلود کنید. ساختار فایلهای این پروژه به صورت زیر است.
initial-project.zip
├── src
│ └── index.js
برای اجرای پروژه میتوانید از Node.js استفاده کنید. برای این کار با استفاده از ترمینال، به پوشه پروژه بروید و دستور زیر را وارد کنید:
node src/index.js
جزئیات
وظیفه شما این است که تابع filterAndSortProducts
را کامل کنید. ورودیهای این تابع لیستی از محصولات (products
) و معیارهای مرتبسازی (criteria
) خواهد بود:
محصولات
محصول |
---|
id ، name ، category و price |
لیستی از محصولات به عنوان ورودی اول به تابع داده میشود. به عنوان مثال:
const products = [
{ id: 1, name: "Apple iPhone 12", category: "Electronics", price: 999 },
{ id: 2, name: "Adidas running shoes", category: "Sportswear", price: 280 },
{ id: 3, name: "Samsung Galaxy S21", category: "Electronics", price: 850 },
{ id: 4, name: "Nike Air Max", category: "Sportswear", price: 300 }
];
معیارها
کاربران میتوانند محصولات را بر اساس دستهبندی، قیمت، طول نام محصول و یا کلمات کلیدی فیلتر و همچنین آنها را به صورت صعودی یا نزولی مرتب کنند.
معیار | تعریف |
---|---|
categories |
لیستی از نام دستهبندیهای مورد نیاز برای فیلتر محصولات |
priceRange |
تعیین بازه قیمت برای فیلتر محصولات |
nameLength |
تعیین بازه طول کلمه برای فیلتر نام محصولات |
keywords |
کلمات کلیدی برای فیلتر محصولات |
sortBy |
لیستی از معیارهای مرتبسازی و نحوه مرتبسازی |
آبجکت معیارها به عنوان ورودی دوم به تابع داده میشود. به عنوان مثال:
const criteria = {
categories: ["Electronics", "Sportswear"],
priceRange: { min: 200, max: 1000 },
nameLength: { min: 10, max: 25 },
keywords: ["Galaxy", "Air"],
sortBy: [
{ field: "price", order: "ascending" },
{ field: "name", order: "descending" }
]
};
نکته
ممکن است هر یک از مقادیر criteria
اصلا وجود نداشته باشد یا مقدار خالی داشته باشد. در صورتی که هر کدام از معیارها داده نشد، فیلتر یا مرتبسازی برای آن معیار انجام نخواهد شد.
با توجه به مثالها، خروجی تابع باید به شکل زیر باشد:
[
{ id: 4, name: "Nike Air Max", category: "Sportswear", price: 300 },
{ id: 3, name: "Samsung Galaxy S21", category: "Electronics", price: 850 }
]
نحوهی ارسال پاسخ
پس از اعمال تغییرات در index.js
، آن را داخل فولدر src
قرار داده و به صورت یک فایل ZIP با ساختار زیر ارسال نمایید.
[your-zip-file-name].zip
├── src
│ └── index.js
توجه
فراموش نکنید هنگام ارسال، امضای تابع به صورت زیر باشد:
function filterAndSortProducts(products, criteria) {
}
module.exports = { filterAndSortProducts };
ارسال پاسخ برای این سؤال