Skip to content Skip to sidebar Skip to footer

Do You Know How To Loop This?

example we have this js array (some kind like lat, lng): items = [ [aa,aa], [bb,bb], [cc,cc] ] the result that i expected should be like this: A = [ [aa,aa], [bb,bb] ] B = [ [bb,b

Solution 1:

You are trying to iterate over two consecutive elements (arrays), you can use ruby_cons.

Note: This is a Ruby solution to iterate over consecutive elements.

items.each_cons(2) do |arr|
  p arr
end

Solution 2:

in javascript, you can try sth like,

> items
[ [ 42.32, 47.32 ], [ 49.434, 41.343 ], [ 43.34, 43.45 ] ]
> container = []
[]
> for(var i = 0; i<items.length-1; i++) {
...container.push(items.slice(i, i+2));...}
2
> container[0]
[ [ 42.32, 47.32 ], [ 49.434, 41.343 ] ]
> container[1]
[ [ 49.434, 41.343 ], [ 43.34, 43.45 ] ]

more generalized solution, inspired from ruby's each_cons(n) enumerable method.

>     each_cons = function(enm, cons_size) {
...       var results = [];
...       /* 
...        *  checking numericality like typeof cons_size == 'number'  
...        *  might be useful. but i'am skipping it.
...        */
...       cons_size = (cons_size < 1 ? 1 : cons_size ); 
...       // setting default to 2 might be more reasonable
...       for (var i=0; i<=enm.length - cons_size; i++) {
.....         results.push(enm.slice(i, i+cons_size));
.....       }
...       return results;
...     }
[Function: each_cons]
> x = [1,2,3,4,5,6,7,8,9,0];
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 ]
> each_cons(x, 0)
[ [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ], [ 6 ], [ 7 ], [ 8 ], [ 9 ], [ 0 ] ]
> each_cons(x, 1)
[ [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ], [ 6 ], [ 7 ], [ 8 ], [ 9 ], [ 0 ] ]
> each_cons(x, 2)
[ [ 1, 2 ],
  [ 2, 3 ],
  [ 3, 4 ],
  [ 4, 5 ],
  [ 5, 6 ],
  [ 6, 7 ],
  [ 7, 8 ],
  [ 8, 9 ],
  [ 9, 0 ] ]
> each_cons(x, 3)
[ [ 1, 2, 3 ],
  [ 2, 3, 4 ],
  [ 3, 4, 5 ],
  [ 4, 5, 6 ],
  [ 5, 6, 7 ],
  [ 6, 7, 8 ],
  [ 7, 8, 9 ],
  [ 8, 9, 0 ] ]
>
> x= "hippopotomonstrosesquipedaliophobia"; //https://en.wiktionary.org/wiki/hippopotomonstrosesquipedaliophobia'hippopotomonstrosesquipedaliophobia'
> each_cons(x, 3)
[ 'hip',
  'ipp',
  'ppo',
  'pop',
  'opo',
  'pot',
  'oto',
  'tom',
  'omo',
  'mon',
  'ons',
  'nst',
  'str',
  'tro',
  'ros',
  'ose',
  'ses',
  'esq',
  'squ',
  'qui',
  'uip',
  'ipe',
  'ped',
  'eda',
  'dal',
  'ali',
  'lio',
  'iop',
  'oph',
  'pho',
  'hob',
  'obi',
  'bia' ]
> 

> x = [[1,2], ['a', 'b'], [2,3,4, {a: 5}]]
[ [ 1, 2 ], [ 'a', 'b' ], [ 2, 3, 4, { a: 5 } ] ]
> each_cons(x, 2)
[ [ [ 1, 2 ], [ 'a', 'b' ] ],
  [ [ 'a', 'b' ], [ 2, 3, 4, [Object] ] ] ]

Post a Comment for "Do You Know How To Loop This?"