打字稿数组重组

时间:2017-04-28 09:02:12

标签: angular typescript multidimensional-array

我想重构我从php中检索到的数组,以使其可用于我的ngFor。

目前我的数组包含~2700个元素,其中包含一个包含以下数据的对象:

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

我想将其更改为array-> week-> shift-> department.name

在JS中这很容易,但在Typescript中我无法使它工作,我的实际代码如下:

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返回前3个值:1,3和#34; departmentx"

然后返回:

错误错误:未捕获(承诺):TypeError:无法读取属性' 3'未定义的 TypeError:无法读取属性' 3'未定义的

我已经读过,我必须先设置数组的大小,但每次都会不同,之后除了存储的名称之外还会有更多的信息。

1 个答案:

答案 0 :(得分:2)

如果我理解你想要更改数组中元素的顺序,对吧?

这应该有效:

    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",
        },
    ];