Ну, я задал этот вопрос раньше и сделал правильный беспорядок, просто;Double For loop
У меня есть два вложенных для петель:
//example x co-ords
var v_circle_collection = [550, 450, 350, 450, 1000, 1450, 1900, 2350, 2200, 2200, 2800, 2700, 2600, 2700, 3250, 3050];
//example x co-ords of circle collection
var circleCollection = [450, 900, 1350, 1800, 2250, 2700, 3150];
for (var i = 0; i < v_circle_collection.length; i++) {
for (var n = 0; n < circleCollection.length; n++) {
//i only need to go through CircleCollection 7 times. but this nested for loop does the 16*7 sum.
if (v_circle_collection[i] > circleCollection[n]) {
//do the stuff i need to do
}
}
}
Первый цикл будет объезжать 7 раз в то время как другая петля развозит 16 раз делая 7 * 16 сум. То, что мне нужно для первого цикла for, - это получить доступ ко всем значениям в circleCollection
, поскольку в этом массиве только 7, но из-за следующего цикла, а затем примерно в 16 раз он вмешивается в него.
Мне нужно только пройти через circleCollection
7 раз, есть ли способ, которым я могу это сделать? Является ли использование вложенных для циклов подобным образом неправильным способом?
что мне действительно нужно, это какой-то счет, который будет идти только на 0-6 вместо использования другого цикла.
JS FIDDLE - https://jsfiddle.net/oomw8snq/1/
это цель я пытаюсь получить
если я жесткий код он работает, как никогда, потому что может быть произвольное количество созданных кругов не является жизнеспособным:
код: цикл for в действительности не имеет значения, в этом случае ему просто нужно получить доступ к значениям внутри объектов кругов.
for(var i=0; i < v_circle_collection.length; i++)
{
if(v_circle_collection[0].getX() > circleCollection[0].getX())
{
v_circle_collection[0].setX(v_circle_collection[0].getX()+5);
}
if(v_circle_collection[2].getX() < circleCollection[0].getX())
{
v_circle_collection[2].setX(v_circle_collection[2].getX()-5);
}
/*Y's*/
if(v_circle_collection[1].getY() > circleCollection[0].getY())
{
v_circle_collection[1].setY(v_circle_collection[1].getY()+4);
}
if(v_circle_collection[3].getY() < circleCollection[0].getY())
{
v_circle_collection[3].setY(v_circle_collection[3].getY()-4);
}
}
Что objCollection? – slebetman
просто массив элементов окружности SVG, в котором я могу получить значения X и Y. –
каким образом это * мешает * со значениями? Если вы знаете, что это должно быть только цикл через 6 раз, почему вы не можете просто сказать 'for (var i = 0; i <7; i ++) {...}'? –