我有2个数组,例如[2,3]
和[1000,1200,500,600,1600]
。
我需要为此写一个for loop
。
1.从0开始索引,在2开始索引。
2.从2和结束索引开始时间,前2个元素的总和(2 + 3)= 5.
var arr = [2,3];
for(var i = 0; i<arr.length;i++)
{
//this loop runs 2 time
for(var j = 0 ; j < 2 ; j++)//for the first time
for(var j = 2 ; j < 5 ; j++)//for the second time
}
如何使这个动态循环?有人可以帮我代码吗?
答案 0 :(得分:1)
这可以做你想要的,也可以扩展。
for(int y = 0; y < column; y++)
{
allmin[y] = min
allmax[y] = max
for(int x = 0; x < row; x++)
{
allmin[y] = std::min(matrix[x][y], allmin[y]); //allmin[y] always store the min value has meet before
allmax[y] = std::max(matrix[x][y], allmax[y]); //allmax[y] always store the max value has meet before
}
cout << "Mins " << allmin[y] << "\n";
}
答案 1 :(得分:1)
希望你期待这一点。
var arr = [2, 3];
for (var i = 0; i < arr.length; i++) {
//this loop runs 2 time
if (i == 0) {
//for the first time
for (var j = 0; j < arr[0]; j++) { }
} else if (i == 1) {
//for the second time
var totalSum = arr[0] + arr[1];
for (var j = arr[0]; j < totalSum; j++) //for the second time
{ }
}
}
答案 2 :(得分:1)
如果您希望它是通用的,即您有包含要处理的元素计数的数组arr
,您可以这样做:
var arr = [2,3];
// k is the index into the second array, initialize to 0 here
for(var i = 0, k = 0; i < arr.length;i++)
{
//this loop runs for each element in the arr[] array
for(var j = 0 ; j < i; j++, k++) // increment k
{
// k is now the value you want:
// first time through the loop 0, 1
// second time through the loop 2, 3, 4
}
}
另一个调整是只跟踪start元素,如果j对于值很重要:
var arr = [2,3];
var start = 0;
for(var i = 0; i < arr.length; i++)
{
var end = start + arr[i]; // end is 2,5 in sample
for(var j = start ; j < end; j++)
{
// first time through the loop 0, 1
// second time through the loop 2, 3, 4
}
start = end; // now start at the next index, 0,2 in sample
}
答案 3 :(得分:0)
做这样的事情:
var k = 0;
for(var j = 0 ; j < 2 ; j++) {
k+=arr[j];
}//for the first time
for(var i = 2 ; i < k ; i++) {
//other code
}