Hi Everyone,
Can anyone pls tell me how to use 2 variables (objects) in FOR Loop?
Normally in most programming languages it will be like,
for(i=1,j=1;i<=5;i++,j++)
Whats the equivalent for above statement in Rails? i have two objects
with same number of fields but different values.
@original_object & @modified_object
Hi Everyone,
Can anyone pls tell me how to use 2 variables (objects) in FOR Loop?
Normally in most programming languages it will be like,
for(i=1,j=1;i<=5;i++,j++)
Whats the equivalent for above statement in Rails? i have two objects
with same number of fields but different values.
@original_object & @modified_object
There are several possibilities, depending on exactly what you want to
do (which I'm not totally clear on). One would be:
fields.size.times do |i|
j = i
...
end
though I suspect that if you really just need an index, you wouldn't
need two variables.
You could also look into Array#zip. Beyond that I'd need to know more
about what you're trying to do and how your data are organized.
Hi David and Nantz,
this is what i am trying to do
@window_data_original = Window.getGeneralData(building_id)
@window_data_modified =
ScopeOfWorkAction.getRetrofittedData(building_id,retrofit_cost_data.module_id,Window.column_names,window_data_original)
So after the above two statments, i will have two different objects with
same fields but different values.
Now, these are multi-dimensional array objects (since a building can
have any number of windows). My project is a scientific project, where i
need to
calculate some parameter's like below (just giving a sample):
for window_data_original in @window_data_original
calculation_value1 = window_data_original.size -
window_data_modified.size
total = total + calculation_value1
end
Hope, i am clear this time. Please help me. Thanks in advance.
Hi David and Nantz,
this is what i am trying to do
@window_data_original = Window.getGeneralData(building_id)
@window_data_modified =
ScopeOfWorkAction.getRetrofittedData(building_id,retrofit_cost_data.module_id,Window.column_names,window_data_original)
So after the above two statments, i will have two different objects with
same fields but different values.
Now, these are multi-dimensional array objects (since a building can
have any number of windows). My project is a scientific project, where i
need to
calculate some parameter's like below (just giving a sample):
for window_data_original in @window_data_original
That's some weird loop variable naming
calculation_value1 = window_data_original.size -
window_data_modified.size
total = total + calculation_value1
end
If it's two arrays them you can zip them, or just use an index and
fish things out:
@w_d_orig.each_with_index do |wdo,i|
wdm = @w_d_modified[i]
# etc.
end
for employee in @employees
calculation_value1 = employee.size - employee.size
# first is original value (employee.size) and second is modified
value (employee.size)
total = total + calculation_value1
end
Here, @employees is an two-dimensional array of 50 employees & so the
for loop will run for 50 times. Now, i want to iterate through both
arrays simultaneously so that i will get the final result.
eg:- (consider 5th employee)
calculation_value1 = original_employee[5].size -
modified_employee[5].size
Hope you understand my problem and help me out of this.
for employee in @employees
calculation_value1 = employee.size - employee.size
# first is original value (employee.size) and second is modified
value (employee.size)
total = total + calculation_value1
end
And the examples everyone has provided, you have choices like:
@orig_employees.each_with_index |orig_employee, i|
mod_employee = @mod_employees[i]
calc_val1 = orig_employee.size - mod_employee.size
total = total + calc_val1
end
or:
(0...@orig_employees.length).each |i|
orig_employee = @orig_employees[i]
mod_employee = @mod_employees[i]
calc_val1 = orig_employee.size - mod_employee.size
total = total + calc_val1
end
# (yes, that was 3 dots in the range, not 2)
or:
@orig_employees.length.times |i|
orig_employee = @orig_employees[i]
mod_employee = @mod_employees[i]
calc_val1 = orig_employee.size - mod_employee.size
total = total + calc_val1
end
There are many ways you can do this using the solutions provided. Note
that you *don't* need 2 indexes, since you say both arrays will be the
same length. One index is enough to refer to both arrays.