2014-10-06 85 views
0

如果我有对象的数组:如何获得对象的索引这个数组/在JS

myArray[person{}, person{}, person{}] 

而且每个人都可以包含子对象的一个​​这样的数组:

person{ 
    name: 'XXX', 
    age: 'XXX', 
    children: [{ 
     name: 'XXX', 
     age: 'XXX' 
    },{ 
     name: 'XXX', 
     age: 'XXX' 
    },{ 
     name: 'XXX', 
     age: 'XXX' 
    }] 
} 

如何获取myArray中每个Person的索引以及Children数组中的对象的索引?

我得到的人的索引对象在这样myArray的,使用的indexOf(),这是工作:

function getObjectIndex(myObject) {      
    var myArray = _.flatten(_.values(objects)); 

    var ret = myArray.indexOf(myObject); 

    return ret; //RETURNS 0, 1, 2 etc... 
} 

我不能确定如何扩大getObjectIndex的功能来获取对指数在每个人的儿童对象

function getObjectIndex(myObject) {      
    var myArray = _.flatten(_.values(objects)); 

    var ret = myArray.indexOf(myObject); 

    if (myObject.children.length > 0){ 

     //UNSURE WHAT LOGIC TO APPLY HERE 

     ret += ; 
    } 

    return ret; 
} 

如果有任何儿童存在的对象,我非常想getObjectIndex返回:

Person index in myArray _ Children index in Person 

因此,如果有三个孩子对象人员:

0_0 
0_1 
0_2 

任何帮助或建议将是非常赞赏。

回答

1

如果将数组传递给map,则迭代器函数的第二个参数是对象的索引。这可以用来得到你想要的结果:

var indexArrays = _.map(myArray, function(person, personIndex){ 
     return _.map(person.children, function(child, childIndex){ 
      return personIndex + '_' + childIndex; 
     }); 

    }); 

    var indices = _.flatten(indexArrays); 
相关问题