Apache flex 我的arraycollection中有多少子节点在flex中具有相同的节点?

Apache flex 我的arraycollection中有多少子节点在flex中具有相同的节点?,apache-flex,flex4,flex3,Apache Flex,Flex4,Flex3,我有一个ArrayCollection,它有几个员工和部门。 每个员工都属于一个部门 如何从上述ArrayCollection中找出属于同一部门的员工人数 在数据库中,我们使用联接查询来实现这一点,但如何在Flex中使用ArrayCollection来实现这一点呢 比如说 var employees:ArrayCollection = new ArrayCollection([ {Id:1, name="a", departmentid:1}, {Id:1, name="b", departme

我有一个ArrayCollection,它有几个员工和部门。 每个员工都属于一个部门

如何从上述ArrayCollection中找出属于同一部门的员工人数

在数据库中,我们使用联接查询来实现这一点,但如何在Flex中使用ArrayCollection来实现这一点呢

比如说

var employees:ArrayCollection = new ArrayCollection([
{Id:1, name="a", departmentid:1},
{Id:1, name="b", departmentid:1},
{Id:1, name="c", departmentid:1},
{Id:1, name="x", departmentid:2},
{Id:1, name="y", departmentid:2},
{Id:1, name="m", departmentid:3},
{Id:1, name="n", departmentid:3},
{Id:1, name="p", departmentid:3},
{Id:1, name="o", departmentid:3},
{Id:1, name="s", departmentid:4}]);
在上面的数组集合中 3名员工属于第1部门 2名员工属于第2部门 4名员工属于第3部门 1员工属于第4部门

如何从flex中的arraycollection获取这些值? adobe提供的inbuild函数或属性中是否存在


提前感谢

在Flex/AS3中,它与任何编程语言(java、php、c等)中都是一样的。 您必须在数组的元素中执行循环并检查department属性

var myColl:ArrayCollection....

var count:int = 0;

for(i=0 ; i < myColl.length; i++)
{
   var emp:MyEmplModel = myColl[i] as MyEmplModel;

   if(emp.department == "someDepartment")
   {
      count++;
   }
}

trace("There are "+count+" emp. in someDepartment");
var myColl:ArrayCollection。。。。
变量计数:int=0;
对于(i=0;i
如果chields再次被安排集合,以下内容可能会有所帮助

var o : ArrayCollection = new ArrayCollection();
( o.getItemAt( 0 ) as ArrayCollection ).length 

正如Adrian指出的,您需要实现一个算法来解析您的集合,并确定每个部门有多少员工。关于这方面的一些想法:

通常,数组集合用于存储同一类型的多个项,因此将员工和部门放在同一集合中没有意义。由于任何公司中的部门通常都是定义良好的,从某种意义上说,它们不会经常更改,因此最好使用“枚举”或常量列表以及每个部门名称或唯一代码。这可以通过创建一个静态类来实现,该类包含作为静态字符串的所有部门名称

下一步是解析初始集合,并确定分配给每个现有部门的员工数量。阿德里安再次指出了实现这一点的方法


希望这有帮助。祝你度过愉快的一天。

只需使用内置的过滤功能过滤你想要的内容。
另外,您的对象设置不正确

function myFilterFunc( obj:Object ):Boolean{
  if( obj['departmentid'] == deptId )
    return true;
  return false;
}


var deptId:int = 0;
var employees:ArrayCollection;  

employees = new ArrayCollection([
  {'Id':1,'name':"a", 'departmentid':1},
  {'Id':1,'name':"b", 'departmentid':1},
  {'Id':1,'name':"c", 'departmentid':1},
  {'Id':1,'name':"x", 'departmentid':2},
  {'Id':1,'name':"y", 'departmentid':2},
  {'Id':1,'name':"m", 'departmentid':3},
  {'Id':1,'name':"n", 'departmentid':3},
  {'Id':1,'name':"p", 'departmentid':3},
  {'Id':1,'name':"o", 'departmentid':3},
  {'Id':1,'name':"s", 'departmentid':4}]);


employees.filterFunction = myFilterFunc;
trace( employees.length ) // 10 // no filter applied
employees.refresh()
trace( employees.length ) // 0  // default of 0 is applied
deptId = 1
employees.refresh()
trace( employees.length ) // 3
deptId = 2
employees.refresh()
trace( employees.length ) // 2
deptId = 3
employees.refresh()
trace( employees.length ) // 4
deptId = 4
employees.refresh()
trace( employees.length ) // 1


employees.filterFunction = null;
employees.refresh()
trace( employees.length ) // 10

例如,var employees:ArrayCollection=newarraycollection([{Id:1,name=“a”,departmentid:1},{Id:1,name=“c”,departmentid:1},{Id:1,name=“x”,departmentid:2},{Id:1,name=“y”,departmentid:2},{Id:1,name=“m”,departmentid:3},{Id:1,name=“n”,departmentid:3},{Id:1,name=“p},{Id:1,name=“o”,departmentid:3},{Id:1,name=“s”,departmentid:4}]);