Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中查找对象(另一个对象)中最长的数组_Javascript_Arrays_Object - Fatal编程技术网

在javascript中查找对象(另一个对象)中最长的数组

在javascript中查找对象(另一个对象)中最长的数组,javascript,arrays,object,Javascript,Arrays,Object,我有一个对象的对象。在这些对象中是具有更多对象的数组。 结构如下 我想找出父对象中最长的对象数组是什么。 在我下面的例子中: 对于ObjectOne,最长的数组是B 对于ObjectTwo,最长的数组是C 我可以这样做: var size = Object.values(mainobj).length 但我不知道怎样才能更深入。例如,这不起作用: var size = Object.values(mainobj)[0].length ,但我不知道如何应用它。 我感谢你的帮助 您可以为每个外部

我有一个对象的对象。在这些对象中是具有更多对象的数组。 结构如下

我想找出父对象中最长的对象数组是什么。 在我下面的例子中:

对于ObjectOne,最长的数组是B

对于ObjectTwo,最长的数组是C

我可以这样做:

var size = Object.values(mainobj).length
但我不知道怎样才能更深入。例如,这不起作用:

var size = Object.values(mainobj)[0].length
,但我不知道如何应用它。
我感谢你的帮助

您可以为每个外部键返回一个对象,并获得具有最大内部数组键的数组

[代码>var<代码>var对象<{代码>var对象<{代码>var对象<{代码>var对象<{代码>var对象<{代码>var对象<{代码>var对象<{代码>方方当事人<{代码>方当事人<{一个:{A:{x:'d'd'd'd'd,y,y:'y:::::::,y::::::::::{{A:{A:{{A:{C:{x:{x:'x:'d:'d:'d'd,,,,,{{0'd,y,y,y:'0'C:,{{{0,,,{0'd,y,y:,{y:,{方,y:,{对象对象对象,y:,{{{{0,y:,,,{e'},{x:'d',y:'e'},{x:'d',y:'e'},{x:'d',y:'e'},{x:'d',y:'e'}]}, 结果=对象.keys(对象).map(函数(k){ var o=对象[k]; 返回{ 关键:k, 项目:对象。键(o)。减少(功能(r,l,i){ 如果(!i | | o[r[0]].length
.as console wrapper{max height:100%!important;top:0;}
您可以将对象转换为仅保留具有最大长度的数组:

var mainObj={
1:{ 
A:[
{x:d',y:e'},
{x:'d',y:2}
],
B:[
{x:d',y:e'},
{x:d',y:e'},
{x:d',y:e'},
{x:d',y:e'}
],
C:[
{x:d',y:e'}
]
},
2:{ 
A:[
{x:d',y:e'},
{x:d',y:e'},
{x:d',y:e'}
],
B:[
{x:d',y:e'},
{x:d',y:e'}
],
C:[
{x:d',y:e'},
{x:d',y:e'},
{x:d',y:e'},
{x:d',y:e'},
{x:d',y:e'}
]
}
};
var res={};
Object.keys(mainObj).forEach(key=>{
var maxLength=0,nameOfmaxLenghtArray,maxLenghtArray;
Object.keys(mainObj[key]).forEach(arrayName=>{
if(mainObj[key][arrayName].length>maxLength){
maxLengthArrayName=arrayName;
maxLenghtArray=mainObj[key][arrayName];
maxLength=mainObj[key][arrayName]。长度;
}
});
res[key]={[maxLengthArrayName]:maxLenghtArray};
});
console.log('res:',res);
//然后可以访问mainobj的每个子对象的最大长度数组:
变量子对象='1';
var maxLengthArrayName=Object.keys(res[subObject])[0];
var maxLengthArray=Object.values(res[subObject])[0];
log(`子对象${subObject}的最大长度数组名:`,maxLengthArrayName);

log(`max length array for sub object${subObject}:`,maxLengthArray);
请删除上述代码中的索引,使其成为有效的对象文字。结构有多深,结构的结尾是什么,始终是一个数组?如果两个数组的长度与最大长度相同,会发生什么情况?请提供有效的对象预期输出是什么?@NinaScholz是的,始终是一个数组。如果两个数组的长度相同h作为最大长度,我想返回两者。这是结构的深度。还有更多对象(Object3、Object4等)。非常感谢您花时间。这太完美了。我非常感谢!
var size = Object.values(mainobj)[0].length