Попытка удалить повторяющиеся элементы с одинаковыми значениями, которые находятся рядом друг с другом в массиве (они должны сохранять исходный порядок) - PullRequest
0 голосов
/ 14 июля 2020

Так). Это удаляет все дубликаты. Но я не могу понять logi c для удаления дубликатов, которые только рядом друг с другом.

Например: input :( 'FFNNbbffnnNN'); вывод: [F, N, b, f, n, N];

var uniqueInOrder = function(iterable){
var newArr =[];
var len = iterable.length;
for(var i = 0; i < len ; i ++){
  if( newArr.indexOf(iterable[i]) === -1){
newArr.push(iterable[i])
  } 
 }
    return newArr;
}
uniqueInOrder('ffssSnnsS');

Вот попробовал немножко .. эээ .. попрошайничать. Спасибо!

var uniqueInOrder = function(iterable){
var newArr =[];
var len = iterable.length;
var first = iterable[0];
for(var i = 0; i < len ; i ++){
  if( newArr.indexOf(first) !== newArr.indexOf(first + 1){
newArr.push(iterable[i])
  } 
 }
    return newArr;
}
uniqueInOrder('ffssSnnsS');

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

Я сделал это так:

function uniqueInOrder(str) {
  const letters = str.split('');

  var lastLetter = null;
  for (let [index,letter] of Object.entries(letters)) {
    if (letter === lastLetter) {
      letters[index] = null;
    } else {
      lastLetter = letter;
    }
  }

  console.log(letters);
  return letters.join('');
}

uniqueInOrder('ffssSnnsS');

Я использую split, чтобы превратить его в массив. Я отслеживаю последнее предыдущее письмо. Если текущая буква совпадает, я null ее в массиве, иначе я просто обновляю переменную lastLetter.

0 голосов
/ 14 июля 2020

Используйте Array.filter().

var nums = [1,2,3,3,4,5,5,6,7,7,8];

nums.forEach(function(num,index){
  // Is the current index < the amount of itmes in the array
  // and, if so, is the current item equal to the next item?
  if(index < nums.length && num === nums[index + 1]){
    nums.splice(index,1); // Remove the current item
  }
});

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