یک فروشگاه آنلاین مرتب‌سازی و فیلتر کردن محصولات خود بر اساس دسته‌بندی‌ها را به شما سپرده است. شما باید تابعی بنویسید که بتواند لیست محصولات را بر اساس دسته‌بندی‌های انتخابی کاربر و قیمت آن‌ها (به صورت صعودی یا نزولی) فیلتر و مرتب‌سازی کند.

پروژه اولیه

پروژه اولیه را از این لینک دانلود کنید. ساختار فایل‌های این پروژه به صورت زیر است.

initial-project.zip
├── src
│   └── index.js
Plain text

برای اجرای پروژه می‌توانید از Node.js استفاده کنید. برای این کار با استفاده از ترمینال، به پوشه پروژه بروید و دستور زیر را وارد کنید:

node src/index.js
Plain text

جزئیات

وظیفه شما این است که تابع 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 }
];
JavaScript

معیارها

کاربران می‌توانند محصولات را بر اساس دسته‌بندی، قیمت، طول نام محصول و یا کلمات کلیدی فیلتر و همچنین آن‌ها را به صورت صعودی یا نزولی مرتب کنند.

معیار تعریف
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" }
  ]
};
JavaScript

نکته

ممکن است هر یک از مقادیر criteria اصلا وجود نداشته باشد یا مقدار خالی داشته باشد. در صورتی که هر کدام از معیارها داده نشد، فیلتر یا مرتب‌سازی برای آن معیار انجام نخواهد شد.

با توجه به مثال‌ها، خروجی تابع باید به شکل زیر باشد:

[
	{ id: 4, name:  "Nike Air Max", category: "Sportswear", price:  300 },
	{ id: 3, name: "Samsung Galaxy S21", category: "Electronics", price: 850 }
]
JavaScript

نحوه‌ی ارسال پاسخ

پس از اعمال تغییرات در index.js، آن را داخل فولدر src قرار داده و به صورت یک فایل ZIP با ساختار زیر ارسال نمایید.

[your-zip-file-name].zip
├── src
│   └── index.js
Plain text

توجه

فراموش نکنید هنگام ارسال، امضای تابع به صورت زیر باشد:

function filterAndSortProducts(products, criteria) {

}

module.exports = { filterAndSortProducts };
JavaScript
src/index.js

ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.