我有一个像这样的数组
a=[
[1,6,6,8,0],
[7,3,2,6],
[7,3,2]
]
在这里,我需要找到内部数组的最大长度。我需要用'0'替换其他。
例如,第一个数组有 5 个元素,这是最大长度,所以我需要将“0”放入第二个和第三个数组,直到达到最大长度(即 5)。我应该在这里做什么?
我有一个像这样的数组
a=[
[1,6,6,8,0],
[7,3,2,6],
[7,3,2]
]
在这里,我需要找到内部数组的最大长度。我需要用'0'替换其他。
例如,第一个数组有 5 个元素,这是最大长度,所以我需要将“0”放入第二个和第三个数组,直到达到最大长度(即 5)。我应该在这里做什么?
var max = Math.max.apply(null, a.map(function(i) {
return i.length;
}));
var new_arr = a.map(function(i) {
var pad = max - i.length;
while (pad--) {
i.push(0);
}
return i;
});
正如您所说,您的任务分为两个:
#1 和 #2 都可以通过外部数组的简单循环来实现。首先,我们保留一个变量(我们称之为maxLength
),它会保存我们的最大长度。
var maxLength = 0;
//walk through the array
for (var i = 0; i < a.length; i += 1) {
//choose the larger
maxLength = Math.max(maxLength, a[i].length);
}
现在我们有了想要扩展的大小,我们遍历外循环,在每个子数组上,我们push
将 0 直到长度匹配:
//walk through the array
for (var j = 0; j < a.length; j += 1) {
//the length will increase by 1 on each push
while (a[j].length < maxLength) {
a[j].push(0);
}
}
就是这样。
try this
var i = 0,
max = 0;
while(i<a.length){ // find max
max = a[i].length > max ? a[i].length : max;
i++;
}
i = 0;
while(i<a.length){
for(var j=a[i].length;j<max;j++){
a[i][j] = 0;
}
i++;
}