Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 23.11.2021
Сообщений: 131

Реализация метода пуш

23.03.2023, 18:24. Показов 752. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста, нужно самостоятельно через функцию реализовать метод push не используя методы, то есть не используя сам push или еще что-либо.
Вот мой код
JavaScript
1
2
3
4
5
6
7
8
9
10
numbers.push = function(number) {
  if (number === undefined) {
    return this.length;
  }
  this[this.length] = number;
 
  const count = this.length;
 
  return count;
};
Моя проблема в том что он может добавлять только один элемент к массиву, а по условию он должен иметь возможность добавлять больше одного элемента к массиву. Помогите изменить мой код так чтобы можно было добавлять больше одного элемента.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.03.2023, 18:24
Ответы с готовыми решениями:

реализация метода градиентного спуска (из С++ в JS)
Добрый день, хочу попросить помощи в алгоритме. Есть он в формате *.cpp, но необходимо было переписать его на JS Собственно всё...

Нужно перевести программу из паскаль в делфи . Сама программа этот реализация метода гауса и метода зейделя
Это все в паскале сделано. В программе идет в начале описание меня а аотом сама подпрограмма реализации этих методов. В делфи надо сделать...

Реализация метода Шеннона-Фано и метода Хаффмена на С++
На основе программы написанной для частотных таблиц, написать программу построения кодов сжатия информации используя метод Шеннона-Фано и...

9
 Аватар для klyapa
3503 / 1267 / 429
Регистрация: 24.07.2016
Сообщений: 1,890
23.03.2023, 18:45
Лучший ответ Сообщение было отмечено Julius Caesar как решение

Решение

JavaScript
1
2
3
4
5
6
7
8
9
Array.prototype.JuliusCaesarPush = function (...elems) {
    for(let e of elems) this[this.length] = e;
    return this.length;
};
 
const arr = ['однажды'];
 
console.log(arr.JuliusCaesarPush('в', 'студёную', 'зимнюю', 'пору')); // 5
console.log(arr); // ['однажды', 'в', 'студёную', 'зимнюю', 'пору']
1
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
23.03.2023, 19:00
Господа, смотрите что я заметил :
JavaScript
1
2
3
4
5
6
7
8
9
10
11
Array.prototype.JuliusCaesarPush = function (...elems) {
  for (let e of elems) this[this.length] = e;
  return this.length;
};
 
const test1 = { length: "a" };
const test2 = { length: "a" };
Array.prototype.JuliusCaesarPush.call(test1, 1);
console.log(test1); // {length: "a", a: 1}
Array.prototype.push.call(test2, 1);
console.log(test2); // {length: 1, 0: 1}
1
 Аватар для klyapa
3503 / 1267 / 429
Регистрация: 24.07.2016
Сообщений: 1,890
23.03.2023, 19:44
Цитата Сообщение от DrType Посмотреть сообщение
Господа, смотрите что я заметил
Прикольно. А раньше знал? Видимо в реальном push нельзя переопределить length.
Наверное можно поэкспериментировать с Object.defineProperty() внутри Array.prototype.JuliusCaesarPush, ... но у меня пока не получается добиться нужного результата.
1
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
23.03.2023, 22:37
push еще можно и так сообразить:
JavaScript
1
2
3
let a = [];
a = [...a, ...['полковнику', 'никто', 'не', 'пишет']];
console.log(a);
1
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
24.03.2023, 02:51
klyapa, функция, похоже, обрабатывает свойство length. Но это не valueOf/toString, а нечто иное:

JavaScript
1
2
3
4
const t1 = { length: "5" };
const t2 = { length: [10] };
Array.prototype.push.call(t1, 333); // Object { 5: 333, length: 6 }
Array.prototype.push.call(t2, 444); // Object { 10: 444, length: 11 }
0
 Аватар для klyapa
3503 / 1267 / 429
Регистрация: 24.07.2016
Сообщений: 1,890
24.03.2023, 10:23
Цитата Сообщение от KingdaKa Посмотреть сообщение
... а нечто иное
Вот именно, что нечто. Я даже не знаю, какое определение дать этой шняге. Метод push, выполненный в контексте объекта, у которого есть свойство length, не даёт переписать это свойство просто так и пытается сохранить его, как длину, только непонятно чего, в данном случае...
0
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
24.03.2023, 10:48
Ну это получается массивоподобный объект вообще с длиной как надо:

JavaScript
1
2
const t1 = { length: "5" };
Array.prototype.push.apply(t1, [1, 2, 3, 4, 5]); // { 5: 1, 6: 2, 7: 3, 8: 4, 9: 5, length: 10 }
Добавлено через 1 минуту
А вот шо пишут на MDN:

Метод push не является привязанным к типу; этот метод может быть вызван или применён к объектам, напоминающим массив. Метод опирается на свойство length для определения места вставки значений. Если свойство length не может быть преобразовано в число, будет использовать индекс 0. Сюда входит случай несуществования свойства length, в этом случае оно также будет создано.
1
 Аватар для klyapa
3503 / 1267 / 429
Регистрация: 24.07.2016
Сообщений: 1,890
25.03.2023, 16:00
Цитата Сообщение от KingdaKa Посмотреть сообщение
получается массивоподобный объект
Кривой какой-то получается, ... на spread-е ломается...
JavaScript
1
2
3
4
5
const t1 = { length: "5" };
Array.prototype.push.apply(t1, [1, 2, 3, 4, 5]);
 
console.log(Array.from(t1)); // [undefined, undefined, undefined, undefined, undefined, 1, 2, 3, 4, 5]
console.log([...t1]); // Uncaught TypeError: t1 is not iterable
0
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
26.03.2023, 06:31
Можно присобачить к нему итератор с помощью генератора

JavaScript
1
2
3
4
t1[Symbol.iterator] = function* () {
    const v = Object.values(o);
    yield v;
  };
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.03.2023, 06:31
Помогаю со студенческими работами здесь

Программная реализация "Метода ветвей и границ" или "Метода Гомори"
Здравствуйте. Подскажите, пожалуйста, где можно скачать библиотеки, реализующие какой-нибудь из этих методов? Добавлено через 1 час 16...

Реализация метода
Здравствуйте, я совсем немного понимаю в программировании, а все мои знания Java ограничиваются годом обучения в школе Самсунга, поэтому я...

Реализация метода
Помогите реализовать метод CreateSession() из библиотеки Avanpost.Idm.Connector.Oracle.dll, который, как написано в документации,...

Реализация метода пузырька
Требуется упорядочить заданный одномерный массив A размером N (N- заданное натуральное число) по возрастанию методом пузырька

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru