Перейти к содержимому

Как убрать undefined из массива javascript

  • автор:

Удалить пустые элементы в массиве

Удалить пустые элементы массива можно через метод filter() .

var array = ['JavaScript', '', 'jQuery', null, 'ECMAScript', undefined, 1, '10', 0]; array = array.filter(function (el) < return (el != null && el != "" || el === 0); >); array; // ["JavaScript", "jQuery", "ECMAScript", 1, "10", 0] 

Если в массиве не будет числа «0», то в методе filter() можно просто указать «Boolean». Код выполнится как на примере выше, но в массиве также будет удалён элемент «0».

var array = ['JavaScript', '', 'jQuery', null, 'ECMAScript', undefined, 1, '10', 0]; array = array.filter(Boolean); array; // ["JavaScript", "jQuery", "ECMAScript", 1, "10"] 

Обновлено: 01 ноября 2020

Комментарии

Авторизуйтесь, чтобы добавлять комментарии

Array.prototype.shift()

Метод shift() удаляет первый элемент из массива и возвращает его значение. Этот метод изменяет длину массива.

Синтаксис

arr.shift()

Описание

Метод shift удаляет элемент по нулевому индексу, сдвигает значения по последовательным индексам вниз, а затем возвращает удалённое значение. Если свойство length массива равно 0, вернётся значение undefined .

Метод shift не является привязанным к типу; этот метод может быть вызван или применён к объектам, напоминающим массив. Объекты, не содержащие свойство length , отражающее последний элемент в серии последовательных числовых, начинающихся с нуля, свойств, могут повести себя неправильным образом.

Примеры

Пример: удаление элемента из массива

Следующий код показывает массив myFish до и после удаления его первого элемента. Также он показывает удалённый элемент:

var myFish = ["ангел", "клоун", "мандарин", "хирург"]; console.log("myFish до: " + myFish); //myFish до: ангел,клоун,мандарин,хирург var shifted = myFish.shift(); console.log("myFish после: " + myFish); //myFish после: клоун,мандарин,хирург console.log("Удалён этот элемент: " + shifted); //Удалён этот элемент: ангел 

Вывод этого примера будет следующим:

: ангел,клоун,мандарин,хирург myFish после: клоун,мандарин,хирург Удалён этот элемент: ангел 

Спецификации

Specification
ECMAScript Language Specification
# sec-array.prototype.shift

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

  • Array.prototype.push()
  • Array.prototype.pop()
  • Array.prototype.unshift()

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

This page was last modified on 4 авг. 2023 г. by MDN contributors.

Your blueprint for a better internet.

MDN

Support

  • Product help
  • Report an issue

Our communities

Developers

  • Web Technologies
  • Learn Web Development
  • MDN Plus
  • Hacks Blog
  • Website Privacy Notice
  • Cookies
  • Legal
  • Community Participation Guidelines

Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2024 by individual mozilla.org contributors. Content available under a Creative Commons license.

Курсы javascript

Подскажите,пожалуйста!
Откуда взялся undefined в 3 строке и как от него избавиться?

  Документ без названия  

I тур 26 апреля 2013 г. 1. Круглолесское - Средний перенос 27 апреля 2013 г. 2. Ветераны футбола - Саблинское на КДК 3. Новокавказский - АСХК 3-0 26 апреля 2013 г. 4. Ал. ДЮСШ - Калиновское 7-2 II тур 3 мая 2013 г. 1. Средний - Калиновское 4-1 2. Новокавказский - Ал. ДЮСШ 4-4 3. АСХК - Саблинское 4-8 4. Круглолесское - Ветераны футбола 0-3 III тур 8 мая 2013 г. 1. Ветераны футбола - Средний 4-2 22 мая 2013 г. 2. АСХК - Круглолесское (зап. поле) 3. Саблинское- Ал. ДЮСШ (ос.поле) 8 мая 2013 г. 4. Калиновское - Новокавказский 0-9

02.03.2014, 15:12

Регистрация: 30.04.2012

Сообщений: 2,998

Что-то мне так лень в этом коде разбираться

var write = (i+1+". "+k[i]+'
').replace('undefined', ''); document.write(write);

JavaScript: как удалить значения из массива

Массивом называется упорядоченный тип данных, хранящий несколько значений. Это означает, что каждый элемент в массиве имеет числовой идентификатор (индекс), который используется для ссылки на его место в строке.

Массивы начинаются с индекса 0 и увеличиваются на 1 для каждого значения. Для обращения к значению в массиве воспользуйтесь соответствующим индексом и заключите его в квадратные скобки [] .

let numbers = [10,20,30,40];// выводит значение с явным указанием индекса 
console.log(numbers[0]); # 10
console.log(numbers[1]); # 20
console.log(numbers[2]); # 30
console.log(numbers[3]); # 40
// другой способ: цикл for
for(let i=0; i console.log(numbers[i]);
>

Но что, если мы захотим удалить значение из нашего массива? Для этого существует четыре способа, каждый из которых имеет свои плюсы и минусы, о которых поговорим ниже.

Примечание: все четыре способа доступны без какого-либо импорта дополнительных библиотек.

Через ключевое слово delete

Если вы не любите сложностей, то воспользуйтесь простейшим методом удаления значений из массива — ключевым словом delete . Вам нужно всего лишь указать имя переменной с индексом, который хотите удалить.

let numbers = [1,2,3,4];delete numbers[1];
console.log(numbers); // [1, undefined, 3, 4]

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

Основной вывод: при удалении значения из массива через delete задайте себе вопрос: «Нужно ли мне переиндексировать массив?».

Через метод pop()

Вам нужно удалить самое большое индексное значение из массива? Или же вы хотите переиндексировать массив так, чтобы избавиться от undefined в конце? Тогда метод pop() — это то, что доктор прописал.

let numbers = [1,2,3,4];numbers.pop();
console.log(numbers); // [1,2,3]

Через метод splice()

Если вы хотите удалить определенное значение из массива, а не конкретный индекс, и вы готовы к переиндексации массива, то присмотритесь к методу splice() .

Сплайсинг массива создает новый массив, который удаляет некое количество значений и обрезает массив слева, начиная с определенного индекса.

let numbers = [1,2,3,4];numbers.splice(2);
console.log(numbers); // [1,2]

Если же вы хотите удалить только одно значение, то воспользуйтесь вторым (не обязательным) параметром в методе splice() .

let numbers = [1,2,3,4];numbers.splice(2,1);
console.log(numbers); // [1,2,4]

Обратите внимание, что мы не выводим результат массива сразу. Это потому, что данный метод будет возвращать удаленные значения.

let numbers = [1,2,3,4];console.log(numbers.splice(2,1)); // [3]

Все, конечно, круто и здорово, однако в реальных примерах вам, вряд ли, удастся захардкодить значение индекса. Поэтому давайте воспользуемся методом indexOf() для поиска индекса значения, соответствующего условию.

// удаляет значение 3 из массива let numbers = [1,2,3,4];
i = numbers.indexOf(3);
if(i >= 0) numbers.splice(i,1);
>
console.log(numbers); // [1,2,4]

Условие if в этом коде используется для того, чтобы подтвердить нахождение значения в массиве. Если же значение не найдено, то метод indexOf() вернет -1 . Таким образом, если i больше или равно 0 , то это значение было найдено в массиве.

Через метод filter()

Метод splice() весьма удобен для нахождения и удаления одного значения. Но бывает так, что вам нужно удалить все вхождения значения (или условия) из массива. В таком случае, вашим новым другом станет метод filter() .

Этот метод принимает функцию в качестве аргумента и сохраняет значения, соответствующие true в функции filter . Чтобы отфильтровать определенное значение, необходимо проверить отрицательные индексы.

let numbers = [1,2,3,4];
numbers = numbers.filter((n) => );
console.log(numbers); // [1,2,4]

Обратите внимание, что нам приходится заново присваивать номера индексов. Дело в том, что, в отличие от метода splice() , filter() возвращает новый массив, а не выполняет действия с исходными данными.

Заключение

Это не все способы удаления значений из массива, но и среди указанных можете выбрать метод по душе или же придумать что-то свое.

  • Зачем нужен Strict Mode в JavaScript?
  • Малоизвестные функции JavaScript
  • Условный JavaScript для экспертов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *