2016-12-19 4 views
-1

пример мы имеем этот JS массив (своего рода, как широта, LNG):Знаете ли вы, как это сделать?

items = [ 
[aa,aa], 
[bb,bb], 
[cc,cc] 
] 

результат, что я ожидал, должно быть так:

A = [ 
[aa,aa], 
[bb,bb] 
] 
B = [ 
[bb,bb], 
[cc,cc] 
] 
+0

@Fallenhero жаль, что я забыл упомянуть, что Javascript – Osp

ответ

1

в JavaScript, вы можете попробовать STH, как,

> 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 ] ] 

более обобщенное решение, вдохновленный от each_cons (п) перечислимого метода рубина.

>  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] ] ] ] 
2

Вы пытаетесь итерацию в течение двух последовательных элементов (массивы), вы можете использовать ruby_cons.

Примечание: это решение Ruby для итерации по последовательным элементам.

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

жаль это JS, я забыл упомянуть. – Osp

Смежные вопросы