Как сравнить число в массиве только со следующими числами?

нужна функция, которая принимает массив чисел, и возвращает новый массив, каждое число которого это количество чисел справа от arr [i], которые меньше arr [i].

Мой код работает как-то не правильно((

Пример:
findSmallerDigits([5, 4, 3, 2, 1]) === [4, 3, 2, 1, 0]
findSmallerDigits([1, 2, 0]) === [1, 1, 0]
findSmallerDigits([1, 1, -1, 0, 0]) === [3, 3, 0, 0, 0]
findSmallerDigits([5, 4, 7, 9, 2, 4, 4, 5, 6]) === [4, 1, 5, 5, 0, 0, 0, 0, 0]

function findSmallerDigits(arr) {
  const resultArr = [];

  for (let i = 0; i < arr.length; i++) {
    let count = 0;

    for (let a = 0; a < arr.length; a++) {
      if (arr.indexOf(arr[i]) < arr.indexOf(arr[a]) && arr[i] > arr[a]) {
        count++;
      }
    }
    resultArr.push(count);
  }

  return resultArr;
}


Ответы (1 шт):

Автор решения: Igor

Для повторяющихся элементов indexOf не будет работать так, как Вам надо.

function findSmallerDigits(arr) {
  const resultArr = [];

  for (let i = 0; i < arr.length; i++) {
    let count = 0;

    for (let a = i + 1; a < arr.length; a++) {
      if (arr[i] > arr[a]) {
        count++;
      }
    }
    
    resultArr.push(count);
  }

  return resultArr;
}

console.log(JSON.stringify(findSmallerDigits([5, 4, 3, 2, 1]))); // === [4, 3, 2, 1, 0]
console.log(JSON.stringify(findSmallerDigits([1, 2, 0]))); // === [1, 1, 0]
console.log(JSON.stringify(findSmallerDigits([1, 1, -1, 0, 0]))); // === [3, 3, 0, 0, 0]
console.log(JSON.stringify(findSmallerDigits([5, 4, 7, 9, 2, 4, 4, 5, 6]))); // === [4, 1, 5, 5, 0, 0, 0, 0, 0]

→ Ссылка