如何从嵌套数组中获取最大数组大小?
How to get the max array size from nested arrays?
我有以下示例对象。可以有任何深度的数据,而不仅仅是 3 的示例。
{
'name': 'Clifford Shanks',
'born': 1862,
'died': 1906,
'location': 'Petersburg, VA',
'children': [
{
'name': 'Elizabeth Shanks',
'born': 1795,
'died': 1871,
'location': 'Ireland/Petersburg, VA'
}
],
'parents': [
{
'name': 'James Shanks',
'born': 1831,
'died': 1884,
'location': 'Petersburg, VA',
'parents': [
{
'name': 'Robert Shanks',
'born': 1781,
'died': 1871,
'location': 'Ireland/Petersburg, VA'
},
{
'name': 'Elizabeth Shanks',
'born': 1795,
'died': 1871,
'location': 'Ireland/Petersburg, VA'
},
{
'name': 'Elizabeth Shanks',
'born': 1795,
'died': 1871,
'location': 'Ireland/Petersburg, VA'
}
]
},
{
'name': 'Ann Emily Brown',
'born': 1826,
'died': 1866,
'location': 'Brunswick/Petersburg, VA',
'parents': [
{
'name': 'Henry Brown',
'born': 1792,
'died': 1845,
'location': 'Montgomery, NC'
},
{
'name': 'Sarah Houchins',
'born': 1793,
'died': 1882,
'location': 'Montgomery, NC'
}
]
}
]
}
我想要一些东西给我答案 3
因为 parents
数组之一的长度为 3。我虽然我会使用 lodash 来提取所有数组和我'我能够从那里弄清楚事情但是当我 _.pluck(data, 'parents')
我得到
[undefined, undefined, undefined, undefined, undefined, undefined]
这比什么都奇怪,因为只有 3 个 parents
数组,但我得到 6 个未定义的数组。
知道如何获得最大 parents
数组大小吗?
假设上面的整个对象都分配给了 var obj:
var size = 0;
obj.parents.forEach(function(parent) {
if(parent.parents && parent.parents.length > size)
size = parent.parents.length
})
// If you need to include the 'parent' parents array size,
// add the following check
if(obj.parents.length > size)
size = obj.parents.length;
// end check
return size;
如果您有未指定深度的数据,递归是遍历数据的好方法。我认为 lodash 的 pluck
不会像您的示例那样深入研究树状结构。
var maxParents = 0;
var findMaxParents = function(data) {
// if there are grandparents, let's see how many there are
if(data.parents && data.parents.length > 0) {
data.parents.forEach(function(parent){
findMaxParents(parent);
});
}
if(data.parents && data.parents.length > maxParents) {
maxParents = data.parents.length;
}
return maxParents;
}
这里还有一些 console.logging 的 JSFiddle:http://jsfiddle.net/uerwzm0L/
我有以下示例对象。可以有任何深度的数据,而不仅仅是 3 的示例。
{
'name': 'Clifford Shanks',
'born': 1862,
'died': 1906,
'location': 'Petersburg, VA',
'children': [
{
'name': 'Elizabeth Shanks',
'born': 1795,
'died': 1871,
'location': 'Ireland/Petersburg, VA'
}
],
'parents': [
{
'name': 'James Shanks',
'born': 1831,
'died': 1884,
'location': 'Petersburg, VA',
'parents': [
{
'name': 'Robert Shanks',
'born': 1781,
'died': 1871,
'location': 'Ireland/Petersburg, VA'
},
{
'name': 'Elizabeth Shanks',
'born': 1795,
'died': 1871,
'location': 'Ireland/Petersburg, VA'
},
{
'name': 'Elizabeth Shanks',
'born': 1795,
'died': 1871,
'location': 'Ireland/Petersburg, VA'
}
]
},
{
'name': 'Ann Emily Brown',
'born': 1826,
'died': 1866,
'location': 'Brunswick/Petersburg, VA',
'parents': [
{
'name': 'Henry Brown',
'born': 1792,
'died': 1845,
'location': 'Montgomery, NC'
},
{
'name': 'Sarah Houchins',
'born': 1793,
'died': 1882,
'location': 'Montgomery, NC'
}
]
}
]
}
我想要一些东西给我答案 3
因为 parents
数组之一的长度为 3。我虽然我会使用 lodash 来提取所有数组和我'我能够从那里弄清楚事情但是当我 _.pluck(data, 'parents')
我得到
[undefined, undefined, undefined, undefined, undefined, undefined]
这比什么都奇怪,因为只有 3 个 parents
数组,但我得到 6 个未定义的数组。
知道如何获得最大 parents
数组大小吗?
假设上面的整个对象都分配给了 var obj:
var size = 0;
obj.parents.forEach(function(parent) {
if(parent.parents && parent.parents.length > size)
size = parent.parents.length
})
// If you need to include the 'parent' parents array size,
// add the following check
if(obj.parents.length > size)
size = obj.parents.length;
// end check
return size;
如果您有未指定深度的数据,递归是遍历数据的好方法。我认为 lodash 的 pluck
不会像您的示例那样深入研究树状结构。
var maxParents = 0;
var findMaxParents = function(data) {
// if there are grandparents, let's see how many there are
if(data.parents && data.parents.length > 0) {
data.parents.forEach(function(parent){
findMaxParents(parent);
});
}
if(data.parents && data.parents.length > maxParents) {
maxParents = data.parents.length;
}
return maxParents;
}
这里还有一些 console.logging 的 JSFiddle:http://jsfiddle.net/uerwzm0L/