حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود
آموزش جاوااسکریپت تکمیلی؛ توابع و پردازش داده

ساخت شیء با reduce در جاوااسکریپت؛ شمارش وضعیت‌ها

تجمیع داده‌ها در جاوااسکریپت با reduce · 0٪

✍️ انباشته‌گر reduce می‌تونه یک شیء باشه. برای شمارش وضعیت‌ها، هر وضعیت را به عنوان کلید نگه می‌داریم و تعداد دیده شدنش را افزایش می‌دیم. این ساختار کمک می‌کنه به جای چند بار پیمایش برای هر وضعیت، همه شمارش‌ها را در یک عبور انجام بدیم.

مثلاً از ['red','blue','red'] می‌تونیم گزارش {red:2,blue:1} بسازیم. وقتی کلید برای اولین بار دیده می‌شه، شمارش قبلی ندارد؛ پس مقدار قبلی را صفر در نظر می‌گیریم. بعد یک واحد اضافه می‌کنیم. در پایان هر دور هم باید همان شیء انباشته‌گر را برگردونیم تا دور بعد آن را دریافت کنه.

در این تمرین نام وضعیت‌ها محدود است و فقط کلیدهایی که واقعاً دیده شده‌اند باید در خروجی باشند. آرایه خالی باید شیء خالی بده، نه صفر یا آرایه. خطای رایج، تنظیم همیشگی شمارش روی یک است؛ این کار وجود وضعیت را نشان می‌ده ولی تعداد تکرار را از دست می‌ده. یک نمونه با وضعیت تکراری را دستی حساب کن تا فرق این دو رفتار روشن بشه.

فعالیت شما

countByStatus(statuses) را کامل کن. statuses آرایه رشته‌های 'new'، 'paid' یا 'cancelled' است. شیئی از تعداد هر وضعیت دیده‌شده بساز؛ ['paid','new','paid'] => {paid:2,new:1}. کلید دیده‌نشده اضافه نشود و ورودی خالی => {}.

مطالعهٔ این گام برای همه آزاد است

برای پاسخ‌دادن، بررسی پاسخ، ثبت پیشرفت و استفاده از دستیار باید شرایط شرکت در فعالیت‌ها را داشته باشید.

برای انجام فعالیت وارد شوید

فعالیت‌های این بخش به اشتراک فعال نیاز دارند. تهیهٔ اشتراک

برای انجام فعالیت‌ها ابتدا این دوره‌های پیش‌نیاز را تکمیل کنید:

کد اولیهٔ فعالیت

function countByStatus(statuses) {
  return statuses.reduce((counts, status) => {
    // TODO: شمارش فعلی را افزایش بده و counts را برگردان.
  }, {});
}