angular - بازسازی آرایه در تایپاسکریپت


من میخواهم آرایهای که از PHP دریافت کردهام را بازسازی کنم تا بتوانم از آن با ngFor استفاده کنم.

در حال حاضر آرایه من تقریباً شامل ۲۷۰۰ عنصر است که هر کدام یک شیء با دادههای زیر را دارند:

name: "Someone"
shift: 3
week: 1
department_name: "somedepartment"

میخواهم آن را به array->week->shift->department.name تغییر دهم

در جاوااسکریپت این کار ساده است اما در تایپاسکریپت نمیتوانم آن را درست کنم، کد فعلی من به این شکل است:

test(data): void{
//data contains the actual array
let user = [];
for (let entry of data){
  console.log(entry['week']);
  console.log(entry['shift']);
  console.log(entry['department_name']);
  user[entry['week']][entry['shift']][entry['department_name']] = entry;
}
console.log(user);}

console.log سه مقدار اول را برمیگرداند: 1، 3، "departmentx"

و سپس بازمیگردد:

خطا: خطا: گرفته نشده (در وعده): TypeError: نمیتوان ویژگی '3' را از تعریفنشده خواند TypeError: نمیتوان ویژگی '3' را از تعریفنشده خواند

من خواندهام که باید اندازه آرایه را قبلاً تعیین کنم، اما هر بار متفاوت خواهد بود و بعدها اطلاعات بسیار بیشتری علاوه بر نام ذخیره خواهند شد.

پاسخ شماره ۱

اگر درست فهمیده باشم، شما میخواهید ترتیب عناصر داخل آرایه خود را تغییر دهید، درست است؟

این باید کار کند:

    let newArray = [];
    for (let entry in data) {
        let currentObj = {
            [entry.week]: {
              [entry.shift]: entry.department_name
            }
        };
        newArray.push(currentObj);
    }
    console.log(JSON.stringify(newArray));

خروجی این چیزی شبیه به خواهد بود:

   newArray = [
        1: {
            3: "somedepartmentX"
        },
        2: {
            4: "somedepartmentY",
        },
        3: {
            5: "somedepartmentZ",
        },
    ];