Javascript – видалити – масиви js. Як видалити певний елемент масиву JavaScript? Видалити елемент з масиву javascript

💖 Подобається?Поділися з друзями посиланням

Я описав лише частину методів роботи з масивами.

Тут ми поговоримо про додавання, видалення елементів масиву. Про перевертання та сортування масиву, а також про нарізування, заміну та комбінування масивів.

Додавання елементів до масиву.

Ви можете використовувати властивість length для додавання нових елементів до масиву:

Var myArray = ["Apple", "Microsoft", "Google", "Facebook"]; myArray = "Yahoo!"; console.log(myArray); // ["Apple", "Microsoft", "Google", "Facebook", "Yahoo!"]

Це спрацює, т.к. елементи масиву нумеруються з нуля, а length на одиницю більше. Length завжди еквівалентно index + 1 тому дуже легко додати новий елемент в кінець масиву. Дивно, але ви можете додати елемент на позицію, яка набагато більша, ніж довжина масиву:

Var myArray = ["Jimi Hendrix", "Eric Clapton", "Jimmy Page", "Keith Richards"]; myArray = "Lindsey Buckingham"; console.log(myArray); // ["Jimi Hendrix", "Eric Clapton", "Jimmy Page", "Keith Richards", undefined × 95, "Lindsey Buckingham"] console.log(myArray.length); // 100

Як показано в коментарях, буде додано 95 порожніх слотів та елемент "Lindsey Buckingham" в кінець масиву. Після цього ми отримаємо довжину 100. Ще один спосіб додати новий елемент масив - використовувати метод push():

Var myArray = ["Paul McCartney", "John Lennon", "George Harrison"]; myArray.push("Ringo Starr", "George Martin"); console.log(myArray); // ["Paul McCartney", "John Lennon", "George Harrison", "Ringo Starr", "George Martin"]

Метод push() завжди повертає нову довжину масиву (у разі 5). Додати елемент можна за допомогою splice():

Var myArray = ["acorn", "beech", "mongongo", "macadamia"]; myArray.splice(2, 0, "cashew"); // adds "casew" в index 2 console.log(myArray); // ["acorn", "beech", "cashew", "mongongo", "macadamia"]

Коли другий аргумент 0, це означає, що жоден елемент не буде видалено, а тому будь-які наступні аргументи будуть додані в масив в позицію, вказану в першому аргументі.

Видалення елементів з масиву

Видалити елемент трохи складніше, ніж його додати. Щоб видалити елемент з кінця масиву, можна використовувати pop():

Var myArray = ["7-up", "Sprite", "Ginger Ale", "Lemonade"]; myArray.pop(); console.log(myArray); // ["7-up", "Sprite", "Ginger Ale"]

Метод pop() завжди видаляє останній елемент у масиві та повертає його.

Ви також можете використовувати splice() метод:

Var myArray = ["cassava", "nutmeg", "lupin", "rhubarb"]; myArray.splice(2, 1); // видалити елемент із індексом 2 console.log(myArray); // ["cassava", "nutmeg", "rhubarb"]

На відміну від методу splice(), який використовується для додавання елементів, тут другим аргументом йде 1, яка каже, що ми хочемо видалити елемент з індексом 2 (або третій за рахунком). В даному випадку вийшов елемент "lupin".

Ви можете видалити елемент масиву за допомогою оператора delete:

Var myArray = ["Byte Bandit", "Eliza", "Jeefo", "Michelangelo"]; console.log(myArray.length); // 4 delete myArray; // видалити Eliza console.log(myArray.length); // 4 console.log(myArray); // ["Byte Bandit", undefined × 1, "Jeefo", "Michelangelo"]

Перше важливе зауваження: delete() не змінює довжину масиву після видалення елемента (навіть, якщо це був останній елемент масиву). Друге: delete() змінює значення елемента, що видаляється на undefined , тому при зверненні myArray = undefined .

Хороший спосіб видалити елемент із масиву - використовувати John Resig's Array.remove. Нижче наведено приклад використання, взятий з його сторінки:

// Array Remove - By John Resig (MIT Licensed) Array.prototype.remove = function(from, to) (var rest = це. = from< 0 ? this.length + from: from; return this.push.apply(this, rest); }; // Удаление 2 элемента из массива array.remove(1); // Удаление 2-ого элемента с конца массива array.remove(-2); // Удаление второго и третьего элемента array.remove(1,2); // Удаление последнего и предпоследнего элемента array.remove(-2,-1);

Можливо ви захочете подивитися рішення by Viral Patel , одну з функцій Underscore.js , або jQuery's grep() .

Додатково, JavaScript має метод shift(), який видаляє перший елемент у масиві і повертає його значення. Подивимося код:

Var myArray = ["Matt Kramer", "Jason Bieler", "Tom Defile", "Phil Varone"]; console.log(myArray.length); // 4 var firstItem = myArray.shift(); console.log(firstItem); // Matt Kramer console.log(myArray.length); // 3 console.log(myArray); // ["Jason Bieler", "Tom Defile", "Phil Varone"]

За допомогою методу shift() ми видалили елемент, але зберегли його значення в нашій змінній першійItem. Довжина масиву змінилася із 4 на 3.

Цей метод може бути корисним разом із методом push(). Використовуючи їх разом, ми можемо ефективно вибудовувати чергу елементів у масиві. Ми зберігаємо довжину масиву, видаляючи елемент з початку і додаючи новий в кінець.

Навпаки, ми можемо використовувати метод unshift() для додавання елемента до початку масиву:

Var myArray = ["apito", "castanets", "maraca"]; console.log(myArray.length); // 3 myArray.unshift("chime bar", "tan-tan"); console.log(myArray.length); // 5 console.log(myArray); // ["chime bar", "tan-tan", "apito", "castanets", "maraca"]

Використовуючи метод unshift() з методом pop(), ви можете створювати черги в зворотний бік, додаючи елементи на початок і видаляючи з кінця масиву.

Перевертання та сортування елементів масиву.

Щоб перевернути елементи в масиві, ми можемо використовувати reverse():

Var myArray = ["countdown", "final", "the"]; console.log(myArray); // ["countdown", "final", "the"] myArray = myArray.reverse(); console.log(myArray); // ["the", "final", "countdown"]

Сортувати елементи масиву в алфавітному порядку можна за допомогою методу sort():

Var myArray = ["xylophones", "zebras", "juggernauts", "avocados"]; console.log(myArray); // ["xylophones", "zebras", "juggernauts", "avocados"] myArray = myArray.sort(); console.log(myArray); // [ " avocados " , " juggernauts " , " xylophones " , " zebras " ]

Але це не працюватиме з числами.

Var myArray =; console.log(myArray); // myArray = myArray.sort(); console.log(myArray); //

Якщо потрібно відсортувати числа, можна використовувати наступний код:

Function compareNumbers(a, b) ( return a - b; ) var myArray = ; console.log(myArray); // myArray = myArray.sort(compareNumbers); console.log(myArray); //

Як показано вище, за допомогою простої функції, вставленої sort(), масив, що містить числа, буде відсортований правильно.

Об'єднання масивів.

Можна об'єднати 2 або більше масивів і отримати 1 масив, який містить елементи з'єднаних масивів. Для цього використовуємо метод concat():

Var myArray = ["Jay Ferguson", "Andrew Scott"]; var myArray2 = ["Chris Murphy", "Patrick Pentland"]; var myNewArray = myArray.concat(myArray2); console.log(myNewArray); // ["Jay Ferguson", "Andrew Scott", "Chris Murphy", "Patrick Pentland"]

Var myArray = ["Jay Ferguson", "Andrew Scott"]; var myNewArray = myArray.concat("Chris Murphy", "Patrick Pentland"); console.log(myNewArray); // ["Jay Ferguson", "Andrew Scott", "Chris Murphy", "Patrick Pentland"]

Поділ масиву.

Ви можете створити новий масив, що містить 1 або більше елементів з існуючого масиву, використовуючи функцію slice():

Var myArray = ["Vocals", "Bass", "Guitar", "Drums", "Apples", "Oranges"]; var myNewArray = myArray.slice(4); console.log(myNewArray); // ["Apples", "Oranges"]

Метод slice() приймає 1 чи 2 аргументи. Якщо передано 1 аргумент (індекс), новий масив створюється з усіх елементів старого, починаючи з цього індексу. Якщо передано 2 аргументи, то новий масив створюється з елементів, починаючи з першого аргументу до елемента з індексом, переданим у другому параметрі, не включаючи останній. Щоб було зрозуміліше, подивимося код нижче:

Var myArray = ["Vocals", "Bass", "Guitar", "Drums", "Apples", "Oranges"]; var myNewArray = myArray.slice(0, 4); console.log(myNewArray); // ["Vocals", "Bass", "Guitar", "Drums"]

Заміна елементів у масиві.

Ми використовуємо splice() для видалення елементів з масиву, але ми також можемо замінити елемент у масиві на нові елементи:

Var myArray = ["Rivers Cuomo", "Patrick Wilson", "Brian Bell", "Matt Sharp"]; myArray.splice(3, 1, "Scott Shriner"); // Замінити 1 елемент з індексом 3 console.log(myArray); // ["Rivers Cuomo", "Patrick Wilson", "Brian Bell", "Scott Shriner"]

Метод splice() завжди повертає масив, який містить елементи, які були видалені. У рядку 2 буде повернено один елемент «Brian Bell».

Висновок

У цих статтях були описані методи роботи з масивами JavaScript. Деякі додаткові елементи можна переглянути на MDN , які я не включив у цей пост. Вони працюють тільки в IE9+, тому можуть виявитися марними.

Чи є що додати? Чи знаєте якусь цікаву бібліотеку, яка допоможе керувати масивами? Коментуйте, будь ласка!

JavaScript видалити елемент масиву можна кількома методами. До них відносяться методи pop та shift. Метод pop видаляє перший елемент через даного масиву. Метод shift видаляє останній елемент із заданого масиву.

Можна встановити довжину масиву 0, якщо потрібно видалити всі елементи з цього масиву. Але що вам потрібно видалити певний елемент?

Наприклад:

Array_name.splice (index);

Array_name.delete

Можна використовувати метод splice. Він повертає новий масив віддалених елементів. А початковий масив містить елементи, що залишилися.

Перегляньте демо-версію, щоб дізнатися, як використовувати метод JavaScript splice та інші способи видалення певних елементів.

Демонстрація видалення конкретного елемента за допомогою методу splice

У цій демо-версії створюється масив чисел. Спочатку до масиву додаються п'ять елементів. Після цього використовується метод splice видалення третього елемента. Так само JavaScript можна видалити перший елемент масиву.

Елементи числового масиву відображаються до та після використання методу JavaScript splice наступним чином:

Код JavaScript з методом splice:


"; for (i=0; i< Arr_Numbers.length; i++){ the_arr_before_after += Arr_Numbers[i] + "
"; ) document.getElementById("p1").innerHTML = the_arr_before_after; Arrretrun = Arr_Numbers.splice(2,1); var the_arr_before_after ="
"; for (i=0; i< Arr_Numbers.length; i++){ the_arr_before_after += Arr_Numbers[i] + "

Ви помітили, що я використав для JavaScript видалення елемента масиву два параметри. Перший вказує індекс елемента, який потрібно видалити. Другий – скільки елементів потрібно видалити після вказаного ключа.

У наступній демо-версії показано випадок, коли ми використовуємо другий параметр.

Що робити, якщо другий параметр не вказаний у JavaScript-методі splice?

Використання того ж коду, але без другого параметра метод splice :

Arr_Numbers.splice(2);

Код та результат:

Переглянути онлайн демо-версію та код

Як бачите, тут були видалені всі елементи перед вказаним номером індексу. Крім цього, метод splice повертає масив віддалених елементів.

Код JavaScript:

var Arr_Numbers =; var i; var the_arr_before_after = "The original array:
"; for (i=0; i< Arr_Numbers.length; i++){ the_arr_before_after += Arr_Numbers[i] + "
"; ) document.getElementById("p1").innerHTML = the_arr_before_after; Arrretrun = Arr_Numbers.splice(2); var the_arr_before_after ="
"; for (i=0; i< Arr_Numbers.length; i++){ the_arr_before_after += Arr_Numbers[i] + "
"; ) document.getElementById("p2").innerHTML = the_arr_before_after; //Видалені елементи масиву у повертаному масиві var the_arr_before_after = "The removed array elements:
"; for (i=0; i< Arrretrun.length; i++){ the_arr_before_after += Arrretrun[i] + "
"; ) document.getElementById("p3").innerHTML = the_arr_before_after;

Використання функції delete для видалення елемента масиву

Також, щоб JavaScript видалити елемент масиву, можна використовувати функцію delete . Але вона зберігає порожнє місце, і якщо ви повернете цей масив після використання функції, віддалений елемент буде відображений як undefined .

Розглянемо демо-версію, в якій використовується функція delete:

Переглянути онлайн демо-версію та код

Код JavaScript:

var Arr_Strings = ["The", "JavaScript", "Array", "Totorial"]; var i; var the_arr_before_after = "Оргінські аркуші елементів:

"; for (i=0; i< Arr_Strings.length; i++){ the_arr_before_after += Arr_Strings[i] + "
"; ) document.getElementById("p1").innerHTML = the_arr_before_after; //Використання функції delete delete Arr_Strings; var the_arr_before_after = "Array elements after splice method:

"; for (i=0; i< Arr_Strings.length; i++){ the_arr_before_after += Arr_Strings[i] + "
"; ) document.getElementById("p2").innerHTML = the_arr_before_after;

Ви бачите, що для третього елемента відображається undefined після його видалення за допомогою функції delete .



видалити певний елемент масиву js (20)

Чи є спосіб видалити елемент із масиву JavaScript?

Враховуючи масив:

Var ary = ["three", "seven", "eleven"];

Я хотів би зробити щось на зразок:

RemoveItem("seven", ary);

Я переглянув splice() але це тільки видаляє номер позиції, тоді як мені потрібно щось видалити елемент за його значенням.

// відредагував спасибі MarcoCI за поради

Спробуй це:

Function wantDelete(item, arr)( for (var i=0;i !(comment.Id === commentId)));

Ось версія, в якій використовується функція inArray jQuery:

Var index = $.inArray(item, array); if (index != -1) ( array.splice(index, 1); )

Ви можете досягти цього, використовуючи Lodash _.remove .

var array = ["three", "seven", "eleven"]; var evens = _.remove(array, function(e) ( return e !== "seven"; )); console.log(evens);

Const _ = require("lodash"); _.without(, 2); // ->

Справді, я не розумію, чому це неможливо вирішити за допомогою

Arr = arr.filter(value => value !== "seven");

Або, можливо, ви хочете використовувати vanilla JS

Arr = arr.filter(function(value) ( ​​return value !== "seven" ));

Інший варіант:

If (!Array.prototype.removeArr) ( Array.prototype.removeArr = function(arr) ( if(!Array.isArray(arr)) arr=;//let's be nice to people who put a no-array value here.. that could be me!var that = this; if(arr.length)( var i = 0; )

Це indexOf() всередині циклу знову, але припущення, що масив для видалення є малим щодо масиву, який потрібно очистити; кожне видалення скорочує цикл while.

Це дозволить вам зробити таке:

Var ary = ["three", "seven", "eleven"]; var aryWithoutSeven = ary.filter(function(value) ( ​​return value != "seven" )); console.log(aryWithoutSeven); // returns ["three", "eleven"]

Це також було зазначено в цій темі десь ще: https://.com/a/20827100/293492

Не використовуйте варіант з delete – він робить отвір у масиві, тому що він не переіндексує елементи після віддаленого елемента.

> Array.prototype.remove=function(v)( ... delete this ... ); > var myarray=["3","24","55","2"]; undefined > myarray.remove("55"); undefined > myarray [ "3", "24", "2" ]

Один лайнер зробить це,

Var ary = ["three", "seven", "eleven"]; // Remove item "seven" з array var filteredAry = ary.filter(function(e) ( return e !== "seven" )) //=> ["three", "eleven"] // In ECMA6 (arrow функція syntax): var filteredAry = ary.filter(e => e !== "seven")

Це використовує функцію filter у JS. Він підтримується в IE9 та вище.

filter () викликає надану функцію зворотного виклику один раз для кожного елемента в масиві та створює новий масив із усіх значень, для яких зворотний виклик повертає значення, що призводить до справжнього. callback викликається лише індексів масиву, яким присвоєно значення; він не викликається для індексів, які були видалені або ніколи не були присвоєні значенням. Елементи масиву, які не проходять тест зворотного виклику, просто пропускаються і не включаються до нового масиву.

Таким чином, в основному, це те ж саме, що й інші for (var key in ary) ( ... ) рішень, за винятком того, що for in підтримується як IE6.

В принципі, фільтр - це спосіб зручності, який виглядає набагато краще (і є ланцюговим), на відміну від конструктора for in (AFAIK).

Перевірте це:

For(var i in array)( if(array[i]=="seven")( array.splice(i,1); break; ) )

та у функції:

Function removeItem(array, item)( for(var i in array)( if(array[i]==item)( array.splice(i,1); break; ) ) ) removeItem(array, "seven");

Видалення всіх збігаються елементів з масиву (а не тільки перша, як здається, найзагальніша відповідь тут):

While ($.inArray(item, array) > -1) ( array.splice($.inArray(item, array), 1); )

Я використовував jQuery для важкої роботи, але ви зрозуміли, чи хочете ви поїхати рідною мовою.

Хитрість полягає в тому, щоб пройти через масив від початку до початку, тому ви не зіпсуєте індекси під час видалення елементів.

Var deleteMe = function(arr, me)( var i = arr.length; while(i--) if(arr[i] === me) arr.splice(i,1); ) var arr = ["orange "", "red", "black", "orange", "white", "orange"]; deleteMe(arr, "orange");

arr тепер ["червоний", "чорний", "білий"]

Function cleanArrayOfSpecificTerms(array,unwantedTermsArray) ( $.each(unwantedTermsArray, function(index, value) ( ​​var index = array.indexOf(value); if (index > -1) ( array.splice(index, 1))) );return array; )

Щоб використати, виконайте такі дії:

Var notInclude = ["Not", "No", "First", "Last", "Prior", "Next", "dogs", "cats"]; var splitTerms = ["call", "log", "dogs", "cats", "topic", "change", "pricing"]; cleanArrayOfSpecificTerms(splitTerms,notInclude)

Я спробував використовувати метод функції з jbaron вище, але виявив, що мені потрібно зберегти вихідний масив без змін для використання пізніше і створити новий масив так:

Var newArray = referenceArray;

Function newArrRemoveItem(array, item, newArray)( for(var i = 0; i< array.length; i++) { if(array[i]!=item){ newArray.push(array[i]); } } }

Потім я використовую його так:

Var vesselID = record.get("VesselID"); var otherVessels = new Array(); newArrRemoveItem(vesselArr,vesselID,otherVessels);

Тепер судно Arr залишається неушкодженим, і кожного разу, коли я виконую наведений вище код, масив інших усілок включає все, крім останнього елемента CAID.

indexOf - це варіант, але його реалізація переважно шукає весь масив для значення, тому час виконання зростає з розміром масиву. (Так що це в кожному браузері, я думаю, я тільки перевіряв Firefox).

У мене немає IE6 для перевірки, але я б назвав це безпечною ставкою, що ви можете перевірити принаймні мільйон елементів масиву за секунду таким чином практично на будь-якій клієнтській машині. Якщо [розмір масиву] * [ пошукові запитив секунду] може зрости більше мільйона, ви повинні розглянути іншу реалізацію.

В основному ви можете використовувати об'єкт для створення індексу для вашого масиву, наприклад:

Var index=("three":0, "seven":1, "eleven":2);

Будь-яке нормальне середовище JavaScript створить індекс пошуку для таких об'єктів, щоб ви могли швидко перевести ключ у значення, незалежно від того, скільки властивостей має об'єкт.

Це лише базовий метод, в залежності від ваших потреб ви можете об'єднати кілька об'єктів і / або масивів, щоб зробити ті ж дані швидко доступними для пошуку для різних властивостей. Якщо ви вкажете свої потреби, я можу запропонувати більш конкретну структуру даних.

//This function allows remove even array from array var removeFromArr = function(arr, elem) ( var i, len = arr.length, new_arr = , sort_fn = function (a, b) ( return a - b; ); for ( i = 0;< len; i += 1) { if (typeof elem === "object" && typeof arr[i] === "object") { if (arr[i].toString() === elem.toString()) { continue; } else { if (arr[i].sort(sort_fn).toString() === elem.sort(sort_fn).toString()) { continue; } } } if (arr[i] !== elem) { new_arr.push(arr[i]); } } return new_arr; }

Приклад використання

Var arr = , "abc", 1, "1", 1]; removeFromArr(arr, 1); //["2", , "abc", "1"] var arr = [ , 2, "a", , ]; removeFromArr(arr, ); //]

Let arr =; console.log(arr); //result let index = arr.indexOf(30); if (index > -1) ( arr.splice(index, 1); ) console.log(arr); //result

Var index = array.indexOf("item"); if(index!=-1)( array.splice(index, 1); )

JavaScript утримує оператора removes a property from an object; якщо не більше респондентів до тієї самої власності, то це еventually released автоматично.

Source для цього interactive example is stored in GitHub repository. Якщо ви знайдете, щоб розширити проектні приклади, повторити clone https://github.com/mdn/interactive-examples і виконати додаткові запити.

Syntax delete expression

Будь-яка variable defined with var is non-configurable. У наступному прикладі, словник є неналаштованим і не може бути deleted. У нетривалому режимі, delete operation will return false .

Function Employee() ( delete salary; var salary; ) Employee();

Let's see how the same code behaves in strict mode. Instead of returning false , the statement raises a SyntaxError .

"use strict"; function Employee() ( delete salary; // SyntaxError var salary; ) // Similarly, any direct access to a function // with delete will raise syntaxError function DemoFunction() ( //some code ) delete DemoFunction; // SyntaxError

Examples // Creates the property adminName on the global scope. adminName = "xyz"; // Creates the property empCount on the global scope. // Since we are using var, this is marked as non-configurable. The same is true of let and const. var empCount = 43; EmployeeDetails = ( name: "xyz", age: 5, designation: "Developer" ); // adminName is a property of the global scope. // Це може бути вилучене без того, що він створений без var, // і єдля його налаштування. delete adminName; // returns true // On contrarry, empCount is not configurable // since var was used. delete empCount; // returns false // delete can be used to remove properties from objects. delete EmployeeDetails.name; // returns true // Even when the property does not exist, delete returns " true " . delete EmployeeDetails.salary; // returns true // delete does no affect built-in static properties. delete Math.PI; // returns false // EmployeeDetails is a property of the global scope. // Since it була визначена без "var", it is marked configurable. delete EmployeeDetails; // returns true function f() ( var z = 44; // delete doesn"t affect local variable names delete z; // returns false ) delete and the prototype chain

У наведеному нижче прикладі, ми виконаєте свою власність object while property with the same name available on the prototype chain:

Function Foo() (this.bar = 10; ) Foo.prototype.bar = 42; var foo = New Foo (); // foo.bar is associated with the // own property. console.log(foo.bar); // 10 // Delete the own property within the // foo object. delete foo.bar; // returns true // foo.bar is still available in the // prototype chain. console.log(foo.bar); // 42 // Delete the property on the prototype. delete Foo.prototype.bar; // returns true // The "bar" property can no longer be // inherited from since it has been // deleted. console.log(foo.bar); // undefined

Deleting array elements

Якщо ви delete array element, array length is not affected. Ці holds even if you delete the last element of the array.

Якщо рішучого оператора переміщають на array element, що element is no longer in array. У наступному прикладі, stroms is removed with delete .

Var trees = ["redwood", "bay", "cedar", "oak", "maple"]; delete trees; if (3 in trees) ( // this is not executed )

Якщо ви хочете, щоб елемент існував, але буде невизначеним значенням, використовуйте undefined value instead of delete operator. У наведеному прикладі, stromи є визначеним значенням невизначеним, але array element still exists:

Var trees = ["redwood", "bay", "cedar", "oak", "maple"]; trees = undefined; if (3 in trees) ( // this is executed )

Якщо ви усвідомите, ви хочете, щоб remove array element при зміні contents the array, use the splice method. У наведеному нижче прикладі, stromи є згорнуті з доріжки з повним використанням splice :

Var trees = ["redwood", "bay", "cedar", "oak", "maple"]; trees.splice(3,1); console.log(trees); // ["redwood", "bay", "cedar", "maple"]

Specifications Specification Status Comment
ECMAScript Latest Draft (ECMA-262)
Draft
ECMAScript 2015 (6th Edition, ECMA-262)
Definition of "Delete Operator" в цій specification.
Standard
ECMAScript 5.1 (ECMA-262)
Definition of "Delete Operator" в цій specification.
Standard
ECMAScript 1st Edition (ECMA-262)
Definition of "Delete Operator" в цій specification.
Standard Initial definition. Implemented JavaScript 1.2.
Browser compatibility

Компактність таблиці на цій сторінці генерується з структурованих даних. Якщо ви знайдете, щоб дізнатися про ваші дані, клацніть на https://github.com/mdn/browser-compat-data і пишуть.

Update compatibility data on GitHub

Desktop Mobile Server Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome для Android Firefox для Android Opera для Android Safari on iOS Samsung Internet Node.jsdelete
Chrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 4Opera Full support YesSafari Full support YesWebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support 1.0nodejs Full support Yes
Legend Full support Full support Cross-browser notes

Although ECMAScript може ітерація ордер objects implementation-dependent, його може помітити, що всі великі браузери підтримують ітерацію ордер заснований на earliest added property coming first (at least for properties not on the prototype). However, у випадку з Internet Explorer, коли один використовує, щоб отримати на properties, деякі confusing behavior results, preventing інших browsers з використанням simple objects як object literals as ordered associative arrays. In Explorer, while the property value is indeed set to undefined, if one later adds back a property with the same name, the property will be iterated in its oldпозиція - не на кінці завершення запису як один м'яч expect після того, як усунутий property and then added it back.



Як видалити певний елемент з масиву JavaScript? (20)

У мене є масив цілих чисел і я використовую метод.push() для додавання до нього елементів.

Чи простий спосіб видалити певний елемент з масиву? Еквівалент чогось типу array.remove (int); ,

Я повинен використовувати базовий JavaScript - ніякірамки не дозволені.

ES6 і без мутації: (жовтень 2016) const removeByIndex = (list, index) => [ ...list.slice(0, index), ...list.slice(index + 1) ];

RemoveByIndex(,1) //=>

Відредаговано 2016 жовтня
  • Зробіть це простим, інтуїтивним та явним (https://en.wikipedia.org/wiki/Occam%27s_razor)
  • Зробіть це незмінним (початковий масив залишиться без змін)
  • Зробіть це зі стандартними функціями JS, якщо ваш браузер їх не підтримує – використовуйте polyfill

У цьому прикладі коду я використовую функцію array.filter (...) " для видалення непотрібних елементів з масиву, ця функція не змінює вихідний масив і створює новий. Якщо ваш браузер не підтримує цю функцію (наприклад, IE до версії 9 або Firefox до версії 1.5), подумайте про використання фільтра polyfill із Mozilla .

Видалення елемента (ECMA-262 Edition 5 code aka oldstyle JS) var value = 3 var arr = arr = arr.filter(function(item) ( return item !== value )) console.log(arr) // [ 1, 2, 4, 5 ] Видалення елемента (код ES2015) let value = 3 let arr = arr = arr.filter(item => item !== value) console.log(arr) // [ 1, 2, 4, 5 ]

ВАЖЛИВО ES2015 "() => ()" синтаксис функції стрілки не підтримується в IE взагалі, Chrome до версії 45, Firefox до версії 22, Safari до 10 версії. Для використання синтаксису ES2015 у старих браузерах ви можете використовувати BabelJS

Видалення декількох елементів (код ES2016)

Додатковою перевагою цього є те, що ви можете видалити кілька елементів

Let forDeletion = let arr = arr = arr.filter(item => !forDeletion.includes(item)) // !!! Read below about array.includes(...) support !!! console.log(arr) // [1, 4]

ВАЖЛИВО "array.includes (...)" не підтримується в IE взагалі, Chrome до версії 47, Firefox до версії 43, Safari до версії 9 і Edge до 14 версії, так що

Видалення декількох елементів (передовий експериментальний JavaScript ES2018?) // array-lib.js export function remove(...forDeletion) ( return this.filter(item => !forDeletion.includes(item)) ) // main.js import ( remove ) from "./array-lib.js" let arr = // :: Цей вихід Syntax Proposal // використовуючи "remove" функцію як "virtual method" // без розширення Array.prototype arr = arr::remove (2, 3, 5) console.log(arr) // [1, 4]

Ось кілька способів видалити елемент з масиву з допомогою JavaScript.

Всі описані методи не змінюють вихідний масив і натомість створюють новий.

Якщо ви знаєте індекс елемента

Припустимо, у вас є масив, і ви хочете видалити елемент позиції i .

Один із способів - використовувати slice() :

const items = ["a", "b", "c", "d", "e", "f"] const i = 3 const filteredItems = items.slice(0, i-1).concat(items. slice(i, items.length)) console.log(filteredItems)

slice() створює новий масив із індексами, які він отримує. Ми просто створюємо новий масив - від початку до індексу, який хочемо видалити, і конкатенуємо інший масив з першої позиції, що йде за тією, яку ми видалили до кінця масиву.

Якщо ви знаєте значення

У цьому випадку один хороший варіант - використовувати filter() , який пропонує більше декларативнийпідхід:

const items = ["a", "b", "c", "d", "e", "f"] const valueToRemove = "c" const filteredItems = items.filter(item => item !== valueToRemove) console.log(filteredItems)

Це використовує функції ES6 стрілок. Ви можете використовувати традиційні функції для підтримки старих браузерів:

const items = ["a", "b", "c", "d", "e", "f"] const valueToRemove = "c" const filteredItems = items.filter(function(item) ( return item != = valueToRemove )) console.log(filteredItems)

або ви можете використовувати Babel і перетворити код ES6 назад на ES5, щоб зробити його більш зручним для старих браузерів, але напишіть сучасний JavaScript у своєму коді.

Видалення кількох елементів

Що робити, якщо ви бажаєте видалити багато елементів замість одного елемента?

Знайдемо найпростіше рішення.

За індексом

Ви можете просто створити функцію та видалити елементи послідовно:

const items = ["a", "b", "c", "d", "e", "f"] const removeItem = (items, i) => items.slice(0, i-1).concat (items.slice(i, items.length)) let filteredItems = removeItem(items, 3) filteredItems = removeItem(filteredItems, 5) //["a", "b", "c", "d"] console. log(filteredItems)

За значенням

Ви можете шукати включення всередині функції зворотного дзвінка:

const items = ["a", "b", "c", "d", "e", "f"] const valuesToRemove = ["c", "d"] const filteredItems = items.filter(item => !valuesToRemove.includes(item)) // ["a", "b", "e", "f"] console.log(filteredItems)

Уникайте мутування вихідного масиву

splice() (не плутати з slice()) мутує вихідний масив і слід уникати.

Ви можете використовувати ES6.

Var array=["1","2","3","4","5","6"] var index = array.filter((value)=>value!="3");

["1", "2", "4", "5", "6"]

Ви можете зробити це легко за допомогою методу filter:

Function remove(arrOriginal, elementToRemove)( return arrOriginal.filter(function(el)(return el !== elementToRemove)); ) console.log(remove(, 1));

Це видаляє всі елементи з масиву, а також працює швидше, ніж комбінація зрізу та indexOf

Ви ніколи не повинні мутувати масив масиву. Оскільки це суперечить функціональному шаблону програмування. Ви можете створити новий масив без посилання на масив, який потрібно змінити, використовуючи фільтр методу es6;

Var myArray =;

Припустимо, що ви хочете видалити 5 з масиву, ви можете просто зробити це так.

MyArray = myArray.filter(value => value !== 5);

Це дасть вам новий масив без значення, яке ви бажаєте видалити. Таким чином, результат буде

; // 5 has been removed from this array

Для подальшого розуміння ви можете прочитати документацію MDN на Array.filter filter

Якщо ви хочете видалити новий масив з віддаленими позиціями, ви завжди можете видалити певний елемент і відфільтрувати масив. Можливо, буде потрібно розширення об'єкта масиву для браузерів, які не реалізують метод фільтрації, але в довгостроковій перспективі це простіше, оскільки все, що ви робите, це таке:

Var my_array =; delete my_array; console.log(my_array.filter(function(a)(return typeof a !== "undefined";))));

Повинні відображатись

Якщо у вас складні об'єкти в масиві, ви можете використовувати фільтри? У ситуаціях, коли $ .inArray або array.splice не такі прості у використанні. Особливо якщо об'єкти, можливо, дрібні в масиві.

Наприклад, якщо у вас є об'єкт із полем Id і ви хочете, щоб об'єкт був видалений з масиву:

This.array = this.array.filter(function(element, i) ( return element.id !== idToRemove; ));

Знайдіть index елемента масиву, який ви хочете видалити, а потім видаліть цей індекс за допомогою splice .

Метод splice() змінює вміст масиву шляхом видалення існуючих елементів та/або додавання нових елементів.

var array =; console.log(array) var index = array.indexOf(5); if (index > -1) (array.splice(index, 1);) // array = console.log(array);

Другий параметр splice – це кількість елементів для видалення. Зверніть увагу, що splice змінює масив на місці та повертає новий масив, що містить віддалені елементи.

Ви маєте від 1 до 9 масивів, і ви хочете видалити 5, використовуючи код нижче.

var numberArray = ; var newNumberArray = numberArray.filter(m => ( return m !== 5; )); console.log("new Array, 5 removed", newNumberArray);

Якщо ви хочете використати декілька значень ex: - 1,7,8

var numberArray = ; var newNumberArray = numberArray.filter(m => ( return (m !== 1) && (m !== 7) && (m !== 8); )); console.log("new Array, 5 removed", newNumberArray);

Якщо ви хочете видалити значення масиву в масиві ex: -

var numberArray = ; var removebleArray = ; var newNumberArray = numberArray.filter(m => ( return !removebleArray.includes(m); )); console.log("new Array, removed", newNumberArray);

включає підтримуваний браузер - link

Я знаю, що вже є багато відповідей, але багато хто з них, схоже, ускладнює проблему. Ось простий, рекурсивний спосіб видалення всіх екземплярів ключа – викликає self, доки індекс не буде знайдений. Так, він працює тільки в браузерах indexOf, але він простий і може бути легко заповнений.

Автономна функція

Function removeAll(array, key)( var index = array.indexOf(key); if(index === -1) return; array.splice(index, 1); removeAll(array,key); )

Метод прототипу

Array.prototype.removeAll = function(key)( var index = this.indexOf(key); if(index === -1) return; this.splice(index, 1); this.removeAll(key); )

Array.prototype.removeItem = function(a) ( for (i = 0; i< this.length; i++) { if (this[i] == a) { for (i2 = i; i2 < this.length - 1; i2++) { this = this; } this.length = this.length - 1 return; } } } var recentMovies = ["Iron Man", "Batman", "Superman", "Spiderman"]; recentMovies.removeItem("Superman");



Розповісти друзям