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

Как так? Про splice

26.03.2018, 01:43. Показов 1497. Ответов 6
Метки нет (Все метки)

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

Объясните мне как так. Массив. Удаляю по индексу 1й элемент.
При первом выводе в консоль должно же быть 5 элементов в массиве. С ним же я ничего не делал еще. А во втором 4 ибо первый удалил.

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
const comments = [
      { text: 'Love this!', id: 523423 },
      { text: 'Super good', id: 823423 },
      { text: 'You are the best', id: 2039842 },
      { text: 'Ramen is my fav food ever', id: 123523 },
      { text: 'Nice Nice Nice!', id: 542328 }
    ];
 
    console.table(comments);
 
 
    comments.splice(1, 1);
    console.table(comments);
НО!

и в первом и втором случае получаю массив с уже удаленным элементом. Это такой нюанс у метода или я начудил?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.03.2018, 01:43
Ответы с готовыми решениями:

Метод splice()
Кто может подскажите, что означает ноль в квадратных скобках в методе splice? arr.splice(start, 1);

Неработает splice()
var slots = document.getElementById('my_army').childNodes;// 15 узлов, 7 элементов и 8 текстовых for(var i = 0; i <...

Работа с функцией splice()
Рабочий код: this.schema.leftPanel.items.splice(1,0, ({ type: Terrasoft.ViewModelSchemaItem.ATTRIBUTE, name:...

6
 Аватар для diadiavova
7259 / 2606 / 744
Регистрация: 11.04.2015
Сообщений: 4,150
Записей в блоге: 43
26.03.2018, 02:06
Лучший ответ Сообщение было отмечено shiva-it как решение

Решение

Вряд ли консоль работает в том же потоке, что и страница. Соответственно, не стоит удивляться тому, что удаление элемента срабатывает раньше. Если вместо table использовать log, то происходит еще более странная вещь: массивы выводятся как Array(5) и Array(4) соответственно, а если посмотреть содержимое, то в обоих будет по четыре элемента.
1
707 / 309 / 191
Регистрация: 05.03.2015
Сообщений: 822
26.03.2018, 02:40
На самом деле нет ничего странного: что вы видите в консоли в таблице зависит от браузера, это будет или 2 одинаковых массива по 4 элемента, или 5 и 4 элемента. Само же содержимое массивов при развороте будет одинаковым - это содержимое вашего массива на момент разворота, а не его "слепок" на момент срабатывания кода, как вы ожидаете.

Объясняется это предельно просто - вы работаете с массивом как с со ссылочным объектом, отсюда и идентичный результат в консоли при развороте массивов.

П.С. советую аккуратней быть с мутабельностью, а лучше ее избегать вовсе. Вероятно вы хотели сделать так:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
let comments = [
      { text: 'Love this!', id: 523423 },
      { text: 'Super good', id: 823423 },
      { text: 'You are the best', id: 2039842 },
      { text: 'Ramen is my fav food ever', id: 123523 },
      { text: 'Nice Nice Nice!', id: 542328 }
    ];
 
console.table(comments);
 
 
comments = comments.slice();
comments.splice(1, 1);
console.table(comments);
1
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
26.03.2018, 06:14
а у меня всё правильно срабатывает,как код написан так и выводит консоль
Chrome
Миниатюры
Как так? Про splice  
1
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
26.03.2018, 13:47
P.S.Но не при первой загрузке страницы...сначала вообще ничего нет, а после обновления страницы выводит правильно.
0
707 / 309 / 191
Регистрация: 05.03.2015
Сообщений: 822
26.03.2018, 15:44
Цитата Сообщение от klopp Посмотреть сообщение
а у меня всё правильно срабатывает,как код написан так и выводит консоль
Попробуй развернуть где написано Array(5) и Array(4) под выводом таблиц =)
0
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
26.03.2018, 16:44
из статьи на Хабре:
-Убедитесь, что консоль открыта, перед тем как обновлять страницу, иначе вы ничего не увидите.
Цитата Сообщение от msheal Посмотреть сообщение
Попробуй развернуть где написано Array(5) и Array(4) под выводом таблиц
хочу это развидеть)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.03.2018, 16:44
Помогаю со студенческими работами здесь

Удаление элемента в массиве arr.splice
Здравствуйте. Столкнулся со следующей проблемой есть форма в которой присутствует listBox, в нем отображается массив элементов. Я выделяю...

не корректно работает функция .splice()
Всем привет! У меня возникла проблема, и я ни как ни могу её решить, весь день сижу и ломаю голову! Это что то вроде вставки...

не компилируется про в командной строке, что не так?
CSEG segment org 100h begin: mov ah,9 mov dx,offset Message int 21h mov ch,3 vvodchi; call vvodchi loop vvodchi

Разъясните про QStringList. Элементы не так добавляются
Есть 3 списка: QStringList miklist, abonentslist, ipoctets; abonentslist пуст. Присваиваем ему первое значение: abonentslist =...

Как заблокировать windwos (нет, я не про вирус, а про win+l)
Возможно такой вопрос уже задавали такой вопрос, но всё же как заблокировать компьютер (вызвать экран блокировки как win+l), а то везде...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru