Сравнение и получение значений из двух массивов в скрипте Google - PullRequest
3 голосов
/ 15 апреля 2020

Вот вход ,

colA = [1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,3];
colB = [1.1 ,1.1 ,1.2 ,1.3, 1.3, 'ab', 2.1, 2.1, 2.2, 2.2, 'ab', 3.1, 3.2, 3.3, 3.3, 3.3, 'ab'];
  • Оба массива имеют одинаковую длину.
  • , если в colA всего 6 '1, то в colB будет только 6 из 1-го элемента (1._).

Я хочу, чтобы вывод в консоли выглядел следующим образом:

1, 1.1, count of 1.1 = 2
1, 1.2, count of 1.2 = 3
1, 1.3, count of 1.3 = 2
1, AB,  count of AB  = 1
2, 2.1, count of 2.1 = 2
2, 2.2, count of 2.2 = 2
2, AB,  count of AB  = 2
.
.
.
//or something like this where I must get these three values.

Код:

for(i=0; i < colA.length; i++)
{
 for(j=0; j < colB.length; j++) 
 {
  // what to do here to compare the values.
 }
}

Должен ли я go с двумя циклами for, потому что я хочу, чтобы код был действительно оптимизирован, поскольку в нем должно быть около 10 тыс. Строк данных. Открыты для любых предложений. Спасибо за помощь.

1 Ответ

2 голосов
/ 15 апреля 2020

Вы можете выполнить итерацию с одним l oop и проверить значение с помощью преемника и приращением count.

Если неравенство, сделать вывод и сбросить счетчик до единицы.

var colA = [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3],
    colB = [1.1, 1.1, 1.2, 1.3, 1.3, 'ab', 2.1, 2.1, 2.2, 2.2, 'ab', 3.1, 3.2, 3.3, 3.3, 3.3, 'ab'],
    count = 1,
    i,
    length = colA.length;
   
for (i = 0; i < length; i++) {
    if (colB[i] === colB[i + 1]) {
        count++;
        continue;
    }
    console.log(colA[i], colB[i], count);
    count = 1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...