在JavaScript中查找2d数组中最大的子数组
给定一个数组,我想找到长度最大的子数组,即在JavaScript中查找2d数组中最大的子数组,javascript,arrays,Javascript,Arrays,给定一个数组,我想找到长度最大的子数组,即 var table = [ ["Protein",["Grilled Chicken","Lamb"]], ["Fats",["rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr"]], ["Vegatables",["Carrots","Eggs","Milks","Peppers"]] ]; 我希望它返回[“
var table = [
["Protein",["Grilled Chicken","Lamb"]],
["Fats",["rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr"]],
["Vegatables",["Carrots","Eggs","Milks","Peppers"]]
];
我希望它返回[“胡萝卜”、“鸡蛋”、“牛奶”、“辣椒”]
这是我的密码
function findBiggestSubArray(array){
var biggestArrayIndex = 0;
for(var i=0;i<array.length;i++){
if(i === (array.length-1)){
//We have reached the end of the array then return the array
console.log("Reached the End");
return array[biggestArrayIndex];
} else {
if(!array[biggestArrayIndex][1].length >= array[i][1].length){
biggestArrayIndex = i;
}//End of Inner else block
}//End of Outer else block
}//End of forloop
}
函数findBiggestSubArray(数组){
var BiggestraryIndex=0;
对于(变量i=0;i=array[i][1]。长度){
biggestArrayIndex=i;
}//内块端部
}//外部块的末端
}//前循环结束
}
我会这样做(请参见代码中的注释以了解解释):
var表=[
[“蛋白质”、[“烤鸡”、“羊肉”],
[“脂肪”、[“RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR,
[“蔬菜”、“胡萝卜”、“鸡蛋”、“牛奶”、“辣椒”]]
];
函数findBiggestSubArray(数组){
//初始化空数组。
var bigSubArray=[“”,[];
//循环给定的数组。
对于(var i=0;ibigSubArray[1].length){
//如果较大,则用当前阵列替换它。
bigSubArray=array[i];
}
}
//返回最大的子数组。
返回bigSubArray[1];
}
log(findBiggestSubArray(table))代码>常规解决方案,要查找阵列结构中最大的阵列,请执行以下操作:
我会用递归来实现,这样在任何深度都能找到最大的数组
/**
*数组->要检查的数组,
*biggestArray->迄今为止发现的最大Gestarray
*/
函数findBiggestArray(数组,biggestArray){
biggestArray=biggestArray | |[];
if(array.length>biggestrary.length)
biggestArray=数组;
对于(var i=0;i console.log(findBiggestArray([1,[1,2,3]])
您可以展开、按长度排序,然后选择第一个。我想找到最大的子数组,而不是单词长度!你必须和我一起做recursion@webdeb为什么递归会出现在这里?@PraveenKumar请检查我的答案,看看为什么我会选择递归方法,在我看来它更干净,但很严重。。我没有想到这种方法,前提是原始数组是静态的,并且我想为新手程序员提供一个更简单的解决方案。你同意吗<代码>:)
@PraveenKumar创建函数时,我希望重用它。要解决这样一个简单的任务,一行程序更适用,请参见编辑