Skip to content

Commit dbbee22

Browse files
committed
[js-info/tasks] Lesson "array-methods", 3 of 13
Sort of sorting "in place", but using the splice() method. Worth noting: - JS Info's solution options.. differently altogether. draft
1 parent 8602ecc commit dbbee22

2 files changed

Lines changed: 77 additions & 1 deletion

File tree

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
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]

js-info/tasks/js/array-methods/index.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111

1212
<!-- <script src="arrayShuffling.js"></script> -->
1313
<!-- <script src="removeHyphens.js"></script> -->
14-
<script src="filteringRange .js"></script>
14+
<!-- <script src="filteringRange .js"></script> -->
15+
<script src="filteringInPlace.js"></script>
1516
</body>
1617

1718
</html>

0 commit comments

Comments
 (0)