راکت

تبدیل آرایه به آرایه های زیرمجموعه

1 پاسخ

سلام. امیدوارم حالتون عالی باشه.
من یه آرایه دارم توی جاوااسکریپت که این اطلاعات توش هست.

[
   {_id:0,name:'color',value:'red'},
   {_id:0,name:'color',value:'blue'},
   {_id:0,name:'color',value:'yellow'},
   {_id:1,name:'size',value:'35'},
   {_id:1,name:'size',value:'36'},
   {_id:1,name:'size',value:'37'},
   {_id:1,name:'size',value:'38'},
   {_id:2,name:'brand',value:'adidas'},
   {_id:2,name:'brand',value:'test'},
]

آیدی 0 برای رنگ هست. آیدی یک برای سایز، آیدی دو برای برند و این تعداد میتونه بیشتر هم باشه. در واقع ویژگی های دسته بندی های سایت هست که ادمین میتونه چیزایی مثل جنس، کشور سازنده و... رو بهش اضافه بکنه.

سوالم اینه که چطور میتونم آرایه بالا رو به این شکل در بیارم؟

[
   {
      _id:0,
      name:'color',
      values:['red','blue','yellow']
   },
   {
      _id:1,
      name:'size',
      values:['35','36','37','38']
   },
   {
      _id:2,
      name:'brand',
      values:['adidas','test']
   },
]
ثبت پرسش جدید

پاسخ‌ها

1
Banana Life
Banana Life
@shift.delete

سلام
با loop میتونید ارایه جدید به وجود بیارید.

const array = [
   {_id:0,name:'color',value:'red'},
   {_id:0,name:'color',value:'blue'},
   {_id:0,name:'color',value:'yellow'},
   {_id:1,name:'size',value:'35'},
   {_id:1,name:'size',value:'36'},
   {_id:1,name:'size',value:'37'},
   {_id:1,name:'size',value:'38'},
   {_id:2,name:'brand',value:'adidas'},
   {_id:2,name:'brand',value:'test'},
]
const newArray = [];
let objMap = {};
for (const item of array) {
    if (objMap[item._id]) {
        objMap[item._id].values.push(item.value);
    } else {
        const newObj = {_id: item._id, name: item.name, values: [item.value]};
        objMap[item._id] = newObj;
        newArray.push(newObj);
    }
}

شاید پاسخ شما همین‌جا باشد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام