Как сравнить число в массиве только со следующими числами?
нужна функция, которая принимает массив чисел, и возвращает новый массив, каждое число которого это количество чисел справа от 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]