|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.10.2017, 22:33 | #1 | |
Новичок
Джуниор
Регистрация: 21.10.2017
Сообщений: 2
|
[РЕШЕНО][JavaScript] Получить массив из четырёх наименьших элементов заданного массива. Есть код, помогите найти ошибку.
Подскажите пожалуйста, что не так. Должно выводить массив из 4 минимальных элементов другого массива, а выводит массив из одного значения, повторяющегося 4 раза (минимального).
array_num - изначальный массив array_total - конечный массив Код:
Цитата:
Последний раз редактировалось Вадим Мошев; 07.05.2018 в 19:03. |
|
21.10.2017, 23:19 | #2 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
Операция вида delete arr[index] не приводит к удалению элемента из массива - элемент остаётся на месте, но его значение устанавливается в undefined, а длина массива не изменяется.
Вместо этого нужно воспользоваться методом splice: arr.splice(index, 1). Задавать значение min в начале программы - неверно. Задавайте его равным нулевому элементу массива перед циклом for, а поиск начинайте с первого элемента. Именно в этом у вас заключается вся проблема - после того, как нашли минимум, вы его не обновляете, то есть, не сбрасываете. У вас условие выполняется всегда, min - не изменяется, поэтому идут одинаковые значения. Исправьте эти ошибки и всё должно заработать. Кстати, а что требуется делать по заданию, если в исходном массиве - менее 4 элементов? |
22.10.2017, 00:29 | #3 |
Новичок
Джуниор
Регистрация: 21.10.2017
Сообщений: 2
|
Вадим Мошев, спасибо за ответ. Все заработало!
Я изначально использовал splice, но тоже выдавало не то. Я подумал именно здесь ошибка и заменил на delete. Кроме того, читал что delete меньше памяти ест. А вся соль действительно в том, что min - задано не в том месте. Код работает и со splice, и с delete. "Кстати, а что требуется делать по заданию, если в исходном массиве - менее 4 элементов?" - такой подзадачи не стояло. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[РЕШЕНО] Помогите найти ошибку (есть код): Дано выражение x-x^3/3+...+(-1)^n*(x^2n-1)/2n-1, до тех пор, пока сумма не будет >= k. Сначала вводится k, после уже все остальное. | Romeshek | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 13.10.2017 21:20 |
Дан массив m*n. Составить массив из наименьших элементов каждой строки данного массива. Найти сумму наибольшего и наименьшего элемента массива. | Miriam_ | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 23.04.2017 11:18 |
[free Pascal]: Получить новый массив путём удаления из заданного массива все числа, больше заданного R | Jon_Morgan | Помощь студентам | 1 | 24.12.2016 18:58 |
Дан массив а(n) типа SWORD. найти сумму всех отрицательных элементов массива.помогите найти ошибку | Юлия123456 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 07.09.2016 06:12 |
игра домино.код уже есть! помогите найти ошибку! | kitty_girl | Помощь студентам | 3 | 24.09.2014 12:02 |