如果我有一个对象数组:
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
非常感谢任何帮助或建议。
答案 0 :(得分:1)
如果将数组传递给map,则迭代器函数的第二个参数是对象的索引。这可以用来获得你想要的结果:
var indexArrays = _.map(myArray, function(person, personIndex){
return _.map(person.children, function(child, childIndex){
return personIndex + '_' + childIndex;
});
});
var indices = _.flatten(indexArrays);