2016-09-18 1 views
0

У меня есть массив строк или чисел размера M (M> n). Я хочу проверить, являются ли какие-либо n последовательных элементов одинаковыми, где n может варьироваться между 1-M.Typcript Проверьте, «если все n последовательных элементов одинаковы» в массиве размера M

Например, пусть предположу Я ниже массива, и я хочу, чтобы проверить, есть четыре последовательные «5-й или два последовательные» 3-х присутствуют или нет:

{1,2,3,4,5 , 5,5,5,2,6,3,3,1}

Как я могу это достичь?

P.S. Я также использую Linq.JS для выполнения функций linq в массиве.

+0

Это типичный сократить работу. – Redu

+0

@Redu .. ** уменьшить ** с помощью внешнего счетчика? –

+0

Нет внешних счетчиков ... Я попробую отправить ответ, как только у меня будет время. – Redu

ответ

2

Вы можете сделать следующее

var arr = [1,2,3,4,5,5,5,5,2,6,3,3,1], 
 
result = arr.reduce((p,c,i,a) => c !== a[i+1] ? (p[p.length-1][0] = c, p.concat([[0,1]])) 
 
               : (p[p.length-1][0] = c, p[p.length-1][1]++, p),[[true,1]]) 
 
      .slice(0,-1); 
 
console.log(result);

+0

Это дает мне нечто совсем другое. –

+0

@Pratik Gaikwad дает вам массив с последовательным повторным подсчетом каждого элемента. Составьте его по своему усмотрению. – Redu

+0

Возможно, потребуется кэшировать предыдущее значение, операция 'p [p.length-1] [0]' может занять много времени, если массив был много тысяч. Очки для краткости. –

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