Re-Factor code JS: номер группировки в массиве, значение разности = 1 - PullRequest
0 голосов
/ 19 апреля 2020

можем ли мы переформулировать этот код в более декларативный?

проблема: групповое число в массиве, значение разности = 1

input1 = [1, 2, 3, 5, 6, 9] output1 -> [[1-2-3], [5-6], [9]]

input2 = [1, 3, 4, 7, 8, 9] output2 -> [[1], [3-4], [7-8-9]]

const arrTime = ["01.00", "02.00", "03.00", "05.00", "10.00", "11.00", "12.00"]

const joinString = (array) => {
  let memo = [];
  let result = [];

  const joinBackAddress = array.map((num, idx) => {
    const compare = Math.abs(num - array[idx + 1]);
    return compare === 1 ? true : false;
  });

  const joinFrontAddress = array.map((num, idx) => {
    const compare = Math.abs(num - array[idx - 1]);
    return compare === 1 ? true : false;
  });

  array.forEach((item, index) => {
    if (joinBackAddress[index] && !joinFrontAddress[index]) {
      return (memo = [item]);
    } else if (joinBackAddress[index] && joinFrontAddress[index]) {
      return memo.push(item);
    } else if (joinFrontAddress[index] && !joinBackAddress[index]) {
      memo.push(item);
      result.push(memo);
      return (memo = []);
    } else if (!joinBackAddress[index] && !joinFrontAddress[index]) {
      return result.push([item]);
    }
  });

  return result;
};

joinString(arrTime)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...