如何获取此数组/ JS中对象的索引

时间:2014-10-06 09:35:48

标签: javascript arrays underscore.js indices

如果我有一个对象数组:

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数组中对象的索引?

我正在使用indexOf()获取myArray中Person对象的索引,这是有效的:

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

    var ret = myArray.indexOf(myObject); 

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

我不确定如何扩展getObjectIndex的功能以获取每个Person中的Children对象的索引

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

所以如果一个人中有三个Child对象:

0_0
0_1
0_2

非常感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:1)

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

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

    });

    var indices = _.flatten(indexArrays);