Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/34: Рейтинг темы: голосов - 34, средняя оценка - 4.85
 Аватар для Iangyl
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495

Напишите функцию filterRange(arr, a, b), которая принимает массив arr, ищет в нём элементы между a и b

08.01.2020, 21:06. Показов 7085. Ответов 7
Метки js (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Всех с прошедшими праздниками!

Сегодня, пишу с целью задать несколько вопросов. У меня есть задачка:
Напишите функцию filterRange(arr, a, b), которая принимает массив arr, ищет в нём элементы между a и b и отдаёт массив этих элементов.

Функция должна возвращать новый массив и не изменять исходный.
Например:

JavaScript
1
2
3
4
5
6
7
let arr = [5, 3, 8, 1];
 
let filtered = filterRange(arr, 1, 4);
 
alert( filtered ); // 3,1 (совпадающие значения)
 
alert( arr ); // 5,3,8,1 (без изменений)
Делал в консоли(chrome) - все работает, но результат - "", хотя я дебагом прошёлся несколько раз видел как значения записываються и в созданом массиве есть елементы

Потом решил написать скрипт на компе(создавая .js файл). Открывал скрипт с помощью Node.js через cmd - выбило, что в созданном массиве ничего нету - undefined...

Вот код:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
function filterRange(arr, a, b) {
    let resultArr = [];
    return arr.map((item) => { if (item < b && item >= a) resultArr.push(item) });
}
let arr = [5, 3, 8, 1];
 
let filtered = filterRange(arr, 1, 4);
 
console.log(filtered); // 3,1 (совпадающие значения)
 
console.log(arr); // 5,3,8,1 (без изменений)
В чём причина такого поведения и как его можно исправить, можно-ли написать этот код с помощью map, как мне бы хотелось?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.01.2020, 21:06
Ответы с готовыми решениями:

Создайте фунцию filterRange(arr, a, b), которая принимает массив чисел
Создайте фунцию filterRange(arr, a, b), которая принимает массив чисел arr и возвращает новый массив, который содержит только числа из arr...

Напишите функцию aclean(arr), которая возвращает массив слов, очищенный от анаграмм
Напишите функцию aclean(arr), которая возвращает массив слов, очищенный от анаграмм. Например: var arr = ; alert(...

Проблемы с методом массива (Array.prototype.p=1 var arr=new Array(); arr.watch('p',alertme) arr.p=2)
Опять я с подобной проблемой. &lt;script language='JavaScript1.2'&gt; function alertme(id,oldValue,newValue){ alert('arr.'+id+' =...

7
416 / 307 / 113
Регистрация: 28.08.2013
Сообщений: 836
08.01.2020, 21:14
Причина: отсутствие знания языка программирования. Читай Array.prototype.slice()
JavaScript
1
2
3
4
5
var array = [5, 3, 8, 1];
function filterRange(arr, a, b){
    return arr.slice(a, b);
}
console.log(filterRange(array, 1, 4));
Результат: Array(3) [ 3, 8, 1 ]
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
08.01.2020, 21:27
Лучший ответ Сообщение было отмечено Iangyl как решение

Решение

Цитата Сообщение от Iangyl Посмотреть сообщение
В чём причина такого поведения
потому что в
JavaScript
1
2
3
4
5
6
7
8
function filterRange(arr, a, b) {
    // инициализация пустым массивом
    let resultArr = [];
    // заполнение resultArr значениями arr по условию
    // а так как map  возвращает новый массив и вы ничего не возвращали в него из arr, используя калбек,
    // возвращается массив с неопределенными значениями.
    return arr.map((item) => { if (item < b && item >= a) resultArr.push(item) }); 
}
Цитата Сообщение от Iangyl Посмотреть сообщение
как его можно исправить, можно-ли написать этот код с помощью map, как мне бы хотелось?
quote="Iangyl;14157833"]
JavaScript
1
2
3
4
5
function filterRange(arr, a, b) {
    let resultArr = [];
    arr.map((item) => { if (item < b && item >= a) resultArr.push(item) });
    return  resultArr;
}
Цитата Сообщение от Iangyl Посмотреть сообщение
как его можно исправить
JavaScript
1
2
3
function filterRange(arr, a, b) {
  return arr.filter(item => item < b && item >= a);
}
kidASM,
Цитата Сообщение от Iangyl Посмотреть сообщение
// 3,1 (совпадающие значения)
имеется ввиду в промежутке от одного значения до другого, первый включительно
1
 Аватар для Iangyl
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
08.01.2020, 22:05  [ТС]
kidASM, slice здесь не подходит - внимательно прочитайте задание...
0
09.01.2020, 15:25

Не по теме:

Цитата Сообщение от Iangyl Посмотреть сообщение
внимательно прочитайте задание
- ух какой строгий! :D

0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
09.01.2020, 15:40
Всем здравствуйте и приятного похмелья!
Как раз тот самый современный защищенный способ записи функции, который плохо читается:
JavaScript
1
const filterRange = (arr, a, b) => arr.filter(e => e >= a && e<= b);

Перечисляю классные фишечки:
- имя функции защищено от дублирования.
- параметр e считается элементом последовательности.
- обе границы входят в диапазон значений. Тут мы противоречим глупой парадигме Java, которая правую границу не включает в диапазон.

Мелкий недостаток такого синтаксиса - отвратительный внешний вид
1
 Аватар для Iangyl
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
10.01.2020, 00:20  [ТС]

Не по теме:

amr-now, было сложно, но я понял. Вы несомненно мастер ниндзя-кода XD



Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от klopp Посмотреть сообщение
- ух какой строгий! :D
* не мы такие - жизнь такая

0
1193 / 762 / 128
Регистрация: 10.03.2012
Сообщений: 4,943
23.11.2021, 10:15
JavaScript
1
2
3
4
5
6
7
8
9
function filterRange(arr, a, b) {
  let newArr = [];
  for (let i = 0; i < arr.length; i++) {
      if (arr[i] >= a && arr[i] <= b) {
          newArr.push(arr[i]);
      }
  }
  return result;
}
JavaScript
1
2
3
function filterRange(arr, a, b) {
  return arr.filter(item => (a <= item && item <= b));
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.11.2021, 10:15
Помогаю со студенческими работами здесь

Описать функцию FillArray(out int[] arr), которая создает и заполняет новый массив
1.Описать функцию FillArray(out int arr), которая создает и заполняет новый массив целочисленных элементов случайным количеством...

Синонимы операций взятия адреса массива (arr и &arr)
возможно коряво написал заголовок, да и сам вопрос банальный. после создании лок. массива его адрес можно получить при помощи его имени или...

Почему *arr И arr[] одинаковые, но в тоже время разные?
Например есть какая-то ф-я:void temp(int &amp;(*arr)) { // . . . } И 2 разных массива которые будем передавать ф-и:int main(void) ...

чем отличается *(arr+1) от *(arr++)?
подскажите пожалуйста в чем отличие между *(arr+1) и *(arr++), допустим char arr=&quot;qwertyuiop&quot;; while(*arr!='\0') { ...

Реализовать функцию, которая принимает массив и возвращает количество простых чисел в нем
Ребят , есть задачи , а в частности нужно с помощью функций и деления по остатку (%) написать несколько программ , а именно : 1)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru