如何有效地获取包含多个嵌套集合的集合

时间:2016-11-18 20:27:41

标签: arrays performance typescript collections nested

标题可能不是最好的,我会非常感谢您的改进!

我的意思实际上是非常简单的问题:

假设我有一个包含School数组的Student类,其数组为Notebook s,我想引用我的所有Notebook School

public class School{
  students: Student[];
}

public class Student{
  notebooks: Notebook[]
}

我应该如何参考学校里的所有笔记本?

寻找一种更有效的方法,将所有Notebook保存在使用for循环实现的单独数组中。

提前致谢:)

2 个答案:

答案 0 :(得分:1)

这完全取决于您想要对输出或每个笔记本电脑做什么?这个函数非常复制到for循环而没有所有的样板。

school.students.forEach(function(student) {
  student.notebooks.forEach(function(notebook) {
    doSomethingWithNotebook(notebook);
  });
});

// this returns all notebooks for all students and puts it into a single (flat) array
var allNotebooks = school.students.reduce(function(collection, student) {
  return collection.concat(sudent.notebooks);
}, []);

// now you can do things like filter out only New notebooks
var newNotebooks = allNotebooks.filter(notebook => notebook.isNew);

答案 1 :(得分:0)

从概念上讲,我的反射是寻找类似n维数组/矩阵的东西,想想

myMatrix[ [school][student][notebook[]] ]

(但语法有效), 然后弄清楚如何拉myMatrix [[任何] [任何] [Notbooks []]]。

这最终会避免使用for循环,但是任何能够让你选择所有3nested元素的东西,我相当肯定,这些元素与嵌套存储的元素一样复杂。

本身并不是一个明确的答案,但如果没有更多关于你需要的细节,我能做的最好的就是提供思路。