|
| 1 | +// Фильтрация по диапазону "на месте" |
| 2 | +// Напишите функцию filterRangeInPlace(arr, a, b), которая принимает массив arr и удаляет из него все значения кроме тех, которые находятся между a и b. То есть, проверка имеет вид a ≤ arr[i] ≤ b. |
| 3 | + |
| 4 | +// let arrNum = [5, 3, 8, 1].sort(); |
| 5 | +// console.log(arrNum); // (4) [1, 3, 5, 8] |
| 6 | + |
| 7 | +// --- |
| 8 | +// function sortInPlace(a, b) { |
| 9 | +// if (a > b) return 1; |
| 10 | +// if (a == b) return 0; |
| 11 | +// if (a < b) return -1; |
| 12 | +// } |
| 13 | + |
| 14 | +// let arrNum = [5, 3, 8, 1].sort(sortInPlace); |
| 15 | + |
| 16 | +// console.log(arrNum); // (4) [1, 3, 5, 8] |
| 17 | + |
| 18 | +// --- |
| 19 | +// var numbers = [5, 3, 8, 1]; |
| 20 | +// numbers.sort(function (a, b) { |
| 21 | +// return a - b; |
| 22 | +// }); |
| 23 | + |
| 24 | +// console.log(numbers); // [1, 3, 5, 8] |
| 25 | + |
| 26 | +// --- |
| 27 | +// let arr = [1, 2, 15]; |
| 28 | +// arr.sort((a, b) => a - b); |
| 29 | + |
| 30 | +// console.log(arr); // [1, 2, 15] |
| 31 | + |
| 32 | +// -- |
| 33 | +let numArr = [0, 5, 3, 8, 1, 2, 11, -3, 22, 2]; |
| 34 | +let newNumArr = []; |
| 35 | + |
| 36 | +function sortRangeInPlace(arr, a, b) { |
| 37 | + for (let i = 0; i < numArr.length; i++) { |
| 38 | + if (arr[i] >= a && arr[i] <= b) { |
| 39 | + newNumArr.push(arr[i]); |
| 40 | + } |
| 41 | + } |
| 42 | + return console.log(newNumArr); // [3, 1, 2, 2] |
| 43 | +} |
| 44 | + |
| 45 | +sortRangeInPlace(numArr, 1, 4); |
| 46 | + |
| 47 | +// второй вариант |
| 48 | +let numsArr = [0, 5, 3, 8, 1, 2, 11, -3, 22, 2]; |
| 49 | + |
| 50 | +function filterRangeInPlace(arr, a, b) { |
| 51 | + return arr.filter((num) => num >= a && num <= b).sort((a, b) => a - b); |
| 52 | +} |
| 53 | + |
| 54 | +let newArr = filterRangeInPlace(numsArr, 1, 4); |
| 55 | + |
| 56 | +console.log(newArr); // [1, 2, 2, 3] |
| 57 | + |
| 58 | +// решение JS Info |
| 59 | +function filterRangeInPlace2(arr, a, b) { |
| 60 | + for (let i = 0; i < arr.length; i++) { |
| 61 | + let val = arr[i]; |
| 62 | + |
| 63 | + // удалить, если за пределами интервала |
| 64 | + if (val < a || val > b) { |
| 65 | + arr.splice(i, 1); |
| 66 | + i--; |
| 67 | + } |
| 68 | + } |
| 69 | +} |
| 70 | + |
| 71 | +let arr = [5, 3, 8, 1]; |
| 72 | + |
| 73 | +filterRangeInPlace2(arr, 1, 4); // удалены числа вне диапазона 1..4 |
| 74 | + |
| 75 | +console.log(arr); // [3, 1] |
0 commit comments