Разделить строку без каких-либо встроенных функций - PullRequest
1 голос
/ 27 марта 2019

Мне нужна функция, которая работает как split

var string = "a|b|c" console.log(string.split('|'))

чтобы получить строку и разбить ее используя цикл

function splitstr(str, charToSplit){

      }

Я хочу, чтобы вывод ('a|b|c', '|') был ["a", "b", "c"]

Ответы [ 2 ]

3 голосов
/ 27 марта 2019

Вот несколько более простое решение, которое работает правильно:

function splitStr(str, separator) {
  const parts = [];
  let nextPart = '';
  for (let i = 0; i <= str.length; i++) {
    if (str[i] === separator || i === str.length) {
      parts[parts.length] = nextPart;
      nextPart = '';
    } else {
      nextPart += str[i]
    }
  }
  return parts;
}

console.log(splitStr("abc|abcd|ac", "|"));
1 голос
/ 27 марта 2019

Вы можете использовать код ниже.

Этот код имеет 8 шагов к нему.

  1. Зацикливает строку
  2. Проверяет, равен ли текущий элемент charToSplit
  3. Если это так, он просматривает значения между startIndexи ваш текущий индекс (исключая ваш текущий индекс, который является символом, который вы хотите разделить)
  4. Сначала он устанавливает значение output[currentIndex] в пустую строку (поскольку с помощью += для чего-то, что не 't существующий не работает правильно
  5. Затем он добавляет текущую букву, к которой вы подключены, output
  6. startIndex установлен в ваш текущий индекс + 1 (который является символом послесимвол, который вы хотите разделить)
  7. currentIndex увеличивается на 1, так как вы находитесь на следующем наборе значений
  8. Наконец, код возвращает output

Примечание: Последний дополнительный цикл после первого цикла предназначен для добавления последнего значения в ваш массив output.

function splitstr(str, charToSplit) {
  var output = [];
  var currentIndex = 0;
  var startIndex = 0;

  for (var i = 0; i < str.length; i++) {
    if (str[i] == charToSplit) {
      output[currentIndex] = "";
      for (var x = startIndex; x < i; x++) {
        output[currentIndex] += str[x];
      }
      startIndex = i + 1;
      currentIndex++;
    }
  }
  output[currentIndex] = "";
  for (var i = startIndex; i < str.length; i++) {
    output[currentIndex] += str[i];
  }

  return output;
}

console.log(splitstr("abc|abcd|ac", "|"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...