• Javascript - Elements - Odstraňte konkrétní prvek z pole js. JavaScript Odstranění prvků z pole Js odstranění prvku pole podle indexu



    Jak odstranit konkrétní prvek z pole v JavaScriptu? (20)

    Mám pole celých čísel a k přidávání prvků do něj používám metodu .push().

    Existuje snadný způsob, jak odstranit konkrétní prvek z pole? Ekvivalent něčeho jako array.remove(int); ,

    musím použít základna javascript- žádný rámy nejsou povoleny.

    ES6 a žádná mutace: (říjen 2016)

    const removeByIndex = (seznam, index) => [ ...list.slice(0, index), ...list.slice(index + 1) ];

    RemoveByIndex(,1) //=>

    Upraveno v říjnu 2016

    • Udržujte to jednoduché, intuitivní a explicitní (https://en.wikipedia.org/wiki/Occam%27s_razor)
    • Udělejte jej neměnným (původní pole zůstane nezměněno)
    • Udělejte to se standardními funkcemi JS, pokud je váš prohlížeč nepodporuje - použijte polyfill

    V tomto příkladu kódu, který používám funkce "array.filter(...)". pro odstranění nežádoucích prvků z pole tato funkce nezmění původní pole a vytvoří nové. Pokud váš prohlížeč tuto funkci nepodporuje (například IE starší než verze 9 nebo Firefox starší než verze 1.5), zvažte použití filtr polyfill od Mozilly .

    Odebrání prvku (kód ECMA-262 Edition 5 aka oldstyle JS)

    var value = 3 var arr = arr = arr.filter(function(item) ( return item !== value )) console.log(arr) // [ 1, 2, 4, 5 ]

    Odebrání prvku (kód ES2015)

    let value = 3 let arr = arr = arr.filter(item => item !== value) console.log(arr) // [ 1, 2, 4, 5 ]

    DŮLEŽITÉ ES2015 "() => ()" syntaxe funkce šipky není v IE podporována vůbec, Chrome před verzí 45, Firefox před verzí 22, Safari před verzí 10. Chcete-li použít syntaxi ES2015 ve starších prohlížečích, můžete použít BabelJS

    Odebrání více prvků (kód ES2016)

    Další výhodou této metody je, že můžete odstranit více prvků

    Nechť forDeletion = nechť arr = arr = arr.filter(item => !forDeletion.includes(item)) // !!! Přečtěte si níže o podpoře array.includes(...) !!! console.log(arr) // [ 1, 4 ]

    DŮLEŽITÉ"array.includes(...)" není v IE podporováno vůbec, Chrome před verzí 47, Firefox před verzí 43, Safari před verzí 9 a Edge před verzí 14, takže

    Odebrání více prvků (pokročilý experimentální JavaScript ES2018?)

    // exportní funkce array-lib.js remove(...forDeletion) ( return this.filter(item => !forDeletion.includes(item)) ) // main.js import ( remove ) from "./array-lib .js" let arr = // :: Návrh syntaxe této vazby // pomocí funkce "remove" jako "virtuální metody" // bez rozšíření Array.prototype arr = arr::remove(2, 3, 5) console.log (arr) // [ 1, 4 ]

    Zde je několik způsobů odstranit prvek z pole pomocí javascriptu .

    Všechny popsané metody neměňte původní pole a místo toho vytvořte nový.

    Pokud znáte index prvku

    Řekněme, že máte pole a chcete odstranit prvek na pozici i .

    Jedním ze způsobů je použití slice() :

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

    slice() vytvoří nové pole s indexy, které obdrží. Jednoduše vytvoříme nové pole – od začátku k indexu, který chceme odstranit, a zřetězíme další pole od první pozice za tou, kterou jsme odstranili, na konec pole.

    Pokud znáte význam

    V tomto případě je jednou dobrou možností použít filter() , který nabízí více deklarativní přístup:

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

    To využívá funkce šipek ES6. Pro podporu starších prohlížečů můžete použít tradiční funkce:

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

    nebo můžete použít Babel a převést kód ES6 zpět na ES5, aby byl čitelnější pro starší prohlížeče, ale do kódu napište moderní JavaScript.

    Mazání více položek

    Co když místo jednoho prvku chcete odstranit mnoho prvků?

    Pojďme najít nejjednodušší řešení.

    Podle indexu

    Stačí vytvořit funkci a postupně odstraňovat prvky:

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

    Podle hodnoty

    Můžete hledat zahrnutí uvnitř funkce zpětného volání:

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

    Vyhněte se mutaci původního pole

    splice() (nezaměňovat s slice()) mutuje původní pole a je třeba se mu vyhnout.

    Můžete použít ES6.

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

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

    Můžete to udělat snadno pomocí metody filtrování:

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

    To odstraní všechny prvky z pole a je také rychlejší než kombinace slice a indexOf

    Nikdy byste neměli mutovat pole pole. Protože to jde proti funkčnímu programovacímu vzoru. Pomocí filtru metody es6 můžete vytvořit nové pole bez odkazování na pole, které chcete změnit;

    Var myArray = ;

    Řekněme, že chcete odstranit 5 z pole, můžete to udělat takto.

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

    Získáte tak nové pole bez hodnoty, kterou chcete odstranit. Takže výsledek bude

    ; // 5 bylo z tohoto pole odstraněno

    Pro další pochopení si můžete přečíst dokumentaci MDN na filtru Array.filter

    Pokud chcete nové pole s odstraněnými pozicemi, můžete vždy odebrat konkrétní prvek a pole filtrovat. Možná bude potřeba rozšířit objekt pole pro prohlížeče, které neimplementují metodu filtrování, ale z dlouhodobého hlediska je to jednodušší, protože vše, co uděláte, je toto:

    var my_array = ; delete my_array; console.log(my_array.filter(funkce(a)(vrácení typu a !== "nedefinováno";)));

    Musí být zobrazeno

    Pokud máte v poli složité objekty, můžete použít filtry? V situacích, kdy $.inArray nebo array.splice není tak snadné použít. Zvláště pokud jsou objekty v poli malé.

    Pokud máte například objekt s polem Id a chcete, aby byl objekt z pole odstraněn:

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

    Najděte index prvku pole, který chcete odstranit, a poté tento index odeberte pomocí splice .

    Metoda splice() upravuje obsah pole odstraněním existujících prvků a/nebo přidáním nových prvků.

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

    Druhý parametr ke spojení je počet prvků, které se mají odstranit. Všimněte si, že splice upraví pole na místě a vrátí nové pole obsahující odstraněné prvky.

    Máte 1 až 9 polí a chcete jich odstranit 5 pomocí níže uvedeného kódu.

    varnumberArray = ; var newNumberArray = numberArray.filter(m => ( return m !== 5; )); console.log("nové pole, 5 odstraněno", newNumberArray);

    Pokud chcete použít více hodnot, např.:- 1,7,8

    varnumberArray = ; var newNumberArray = numberArray.filter(m => ( return (m !== 1) && (m !== 7) && (m !== 8); )); console.log("nové pole, 5 odstraněno", newNumberArray);

    Pokud chcete odstranit hodnotu pole v poli např: -

    varnumberArray = ; var removeableArray = ; var newNumberArray = numberArray.filter(m => ( return !removebleArray.includes(m); )); console.log("nové pole, odstraněno", newNumberArray);

    obsahuje podporovaný prohlížeč - odkaz

    Vím, že již existuje mnoho odpovědí, ale zdá se, že mnohé z nich problém komplikují. Zde je jednoduchý, rekurzivní způsob, jak odstranit všechny instance klíče – volá self, dokud není index nalezen. Ano, funguje to pouze v prohlížečích indexOf, ale je to jednoduché a lze je snadno vyplnit.

    Funkce offline

    Funkce removeAll(pole, klíč)( var index = pole.indexOf(klíč); if(index === -1) return; array.splice(index, 1); removeAll(pole,klíč); )

    Prototypová metoda

    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");

    posun

    Pomocí .shift odstraňte první prvek pole.

    Například:

    var pole = ; pole.shift();

    pole má za následek:

    Například:

    var pole = ; pole.pop();

    pole má za následek:

    Obě metody vrátí odstraněný prvek;

    spoj

    Použijte .splice() k odstranění řady prvků z pole. .splice() přebírá dva parametry, počáteční index a volitelný počet prvků k odstranění. Pokud druhý parametr není .splice(), odstraní všechny prvky od počátečního indexu až po konec pole.

    Například:

    var pole = ; pole splice(1, 2);

    ponechává pole obsahující:

    Návrat pole.splice() je nové pole obsahující odstraněné prvky. Ve výše uvedeném příkladu by návratnost byla:

    Vynechání druhého parametru tedy efektivně rozdělí pole na dvě pole, přičemž původní končí až na zadaný index:

    var pole = ; spoj pole(2);

    Opustí pole obsahující a vrátí .

    vymazat

    Použijte delete k odstranění prvku z pole bez změny délky pole:

    var pole = ; console.log(pole.length); // 5 smazat pole; konzolový protokol (pole); // console.log(array.length); // 5

    Délka.prototypu pole

    Přiřazení hodnoty délce pole změní délku o danou hodnotu. Pokud je nová hodnota menší než délka pole, prvky budou odstraněny z konce hodnoty.

    pole = ; délka pole = 2; konzolový protokol (pole); //



    Jak odstranit prvek z pole podle hodnoty? (20)

    // upraveno díky MarcoCI za radu

    Zkus to:

    Funkce wantDelete(item, arr)( for (var i=0;i

    doufám, že vám to pomůže

    Existuje způsob, jak odstranit prvek z pole JavaScript?

    Zadané pole:

    Var ary = ["tři", "sedm", "jedenáct"];

    Chtěl bych udělat něco jako:

    RemoveItem("sedm", ary);

    Podíval jsem se na splice(), ale to odstraní pouze číslo pozice, zatímco potřebuji něco, abych odstranil prvek podle jeho hodnoty.

    Nechat komentářeWithoutDeletedArray = commentsArray.filter((komentář) => !(comment.Id === commentId));

    Zde je verze, která používá funkci inArray jQuery:

    var index = $.inArray(položka, pole); if (index != -1) ( array.splice(index, 1); )

    Toho lze dosáhnout pomocí funkce lodash _.odstranit .

    var pole = ["tři", "sedm", "jedenáct"]; var evens = _.remove(pole, funkce(e) ( return e !== "sedm"; )); konzolový log(eventy);

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

    Opravdu nechápu, proč to nejde vyřešit

    Arr = arr.filter(hodnota => hodnota !== "sedm");

    Nebo možná chcete použít vanilku JS

    Arr = arr.filter(funkce(hodnota) (vrácená hodnota !== "sedm" ));

    Další varianta:

    If (!Array.prototype.removeArr) ( Array.prototype.removeArr = function(arr) ( if(!Array.isArray(arr)) arr=;//buďme milí k lidem, kteří vložili hodnotu bez pole tady.. to bych mohl být já! var that = this; if(arr.length)( var i=0; while(i) -1)( that.splice(i,1); )else i++; ) ) vrátit to; ))

    Je to opět indexOf() uvnitř smyčky, ale za předpokladu, že pole, které se má odstranit, je malé vzhledem k poli, které se má vymazat; každé smazání zkracuje smyčku while.

    To vám umožní provést následující:

    Var ary = ["tři", "sedm", "jedenáct"]; var aryWithoutSeven = ary.filter(funkce(hodnota) (​vrácená hodnota != "sedm" )); console.log(aryWithoutSeven); // vrátí ["tři", "jedenáct"]

    To bylo také uvedeno v tomto vlákně někde jinde: https://.com/a/20827100/293492

    Nepoužívejte možnost delete – vytvoří díru v poli, protože nereindexuje prvky po odstraněném prvku.

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

    Jedna vložka to zvládne

    Var ary = ["tři", "sedm", "jedenáct"]; // Odeberte položku "sedm" z pole var filterAry = ary.filter(funkce(e) ( return e !== "sedm" )) //=> ["tři", "jedenáct"] // V ECMA6 (šipka syntaxe funkce): var filterAry = ary.filter(e => e !== "sedm")

    To využívá funkci filtru v JS. Je podporován v IE9 a vyšší.

    filter() zavolá poskytnutou funkci zpětného volání jednou pro každý prvek v poli a vytvoří nové pole ze všech hodnot, pro které zpětné volání vrátí hodnotu, která má za následek hodnotu true. zpětné volání je voláno pouze pro indexy pole, kterým byly přiřazeny hodnoty; není volána pro indexy, které byly zrušeny nebo kterým nikdy nebyla přiřazena hodnota. Prvky pole, které neprojdou testem zpětného volání, jsou jednoduše přeskočeny a nejsou zahrnuty do nového pole.

    Takže v podstatě je to stejné jako všechna ostatní řešení pro (var key in ary) ( ... ), kromě toho, že for in je podporováno od IE6.

    Filtr je v zásadě pohodlný způsob, který vypadá mnohem lépe (a je řetězitelný) na rozdíl od konstruktoru for in (AFAIK).

    Zkontroluj to:

    For(var i v poli)( if(pole[i]=="sedm")( array.splice(i,1); break; ) )

    a ve funkci:

    Funkce removeItem(pole, položka)( for(var i v poli)( if(pole[i]==položka)( pole.splice(i,1); break; ) ) ) removeItem(pole, "sedm");

    Odstranění všech odpovídajících prvků z pole (nejen první se zde zdá být nejobecnější odpovědí):

    While ($.inArray(položka, pole) > -1) ( array.splice($.inArray(položka, pole), 1); )

    Použil jsem jQuery pro tvrdou práci, ale dostanete nápad, pokud chcete jít nativní.

    Trik je procházet polem od začátku do začátku, abyste si nepokazili indexy, když odebíráte prvky.

    Var deleteMe = function(arr, me)( var i = arr.length; while(i--) if(arr[i] === já) arr.splice(i,1); ) var arr = ["oranžová ","červená", "černá", "oranžová", "bílá", "oranžová" ]; deleteMe(arr , "oranžová");

    arr je nyní ["červená", "černá", "bílá"]

    Funkce cleanArrayOfSpecificTerms(pole,unwantedTermsArray) ( $.each(unwantedTermsArray, funkce(index, hodnota) (​var index = pole.indexOf(hodnota); if (index > -1) ( array.splice(index, 1); ) ) ); návratové pole; )

    Chcete-li použít, postupujte takto:

    Var notInclude = ["Ne","Ne","První","Poslední","Předchozí","Další", "psi","kočky"]; var splitTerms = ["volání", "log", "psi", "kočky", "téma", "změna", "cena"]; cleanArrayOfSpecificTerms(splitTerms,notInclude)

    Zkoušel jsem použít funkci z jbaronu výše, ale zjistil jsem, že musím zachovat původní pole nedotčené pro pozdější použití a vytvořit nové pole, jako je toto:

    var newArray = referenceArray;

    Funkce newArrRemoveItem(pole, položka, novépole)( for(var i = 0; i< array.length; i++) { if(array[i]!=item){ newArray.push(array[i]); } } }

    Pak to používám takto:

    Var ID plavidla = záznam.get("ID plavidla"); var otherVessels = new Array(); newArrRemoveItem(vesselArr,vesselID,otherVessels);

    Nyní plavidloArr zůstává nedotčeno a pokaždé, když spustím výše uvedený kód, pole otherVessels obsahuje všechny prvky CAID kromě posledního.

    indexOf je možnost, ale její implementace v podstatě prohledává hodnotu v celém poli, takže doba provádění roste s velikostí pole. (takže je to tuším v každém prohlížeči, kontroloval jsem jen Firefox).

    Nemám IE6 ke kontrole, ale nazval bych to jistou sázkou, že tímto způsobem můžete zkontrolovat alespoň milion prvků pole za sekundu na téměř jakémkoli klientském počítači. Pokud [velikost pole] * [požadavky na vyhledávání za sekundu] může narůst na více než milion, měli byste zvážit jinou implementaci.

    V zásadě můžete použít objekt k vytvoření indexu pro vaše pole takto:

    Var index=("tři":0, "sedm":1, "jedenáct":2);

    Jakékoli normální prostředí JavaScriptu vytvoří vyhledávací index pro takové objekty, takže můžete rychle převést klíč na hodnotu bez ohledu na to, kolik vlastností má objekt.

    Toto je pouze základní metoda, v závislosti na vašich potřebách můžete zřetězit více objektů a/nebo polí, aby bylo možné rychle vyhledat stejná data pro různé vlastnosti. Pokud specifikujete své konkrétní potřeby, mohu navrhnout konkrétnější datovou strukturu.

    //Tato funkce umožňuje odstranit sudé pole z pole var removeFromArr = function(arr, elem) ( var i, len = arr.length, new_arr = , sort_fn = funkce (a, b) ( return a - b; ); for ( i = 0 i< 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; }

    Příklad použití

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

    Nechť arr = ; konzolový log(arr); //výsledek nech index = arr.indexOf(30); if (index > -1) ( arr.splice(index, 1); ) console.log(arr); //výsledek

    var index = array.indexOf("položka"); if(index!=-1)( array.splice(index, 1); )



    odebrat konkrétní prvek pole js (20)

    Existuje způsob, jak odstranit prvek z pole JavaScript?

    Zadané pole:

    Var ary = ["tři", "sedm", "jedenáct"];

    Chtěl bych udělat něco jako:

    RemoveItem("sedm", ary);

    Podíval jsem se na splice(), ale to odstraní pouze číslo pozice, zatímco potřebuji něco, abych odstranil prvek podle jeho hodnoty.

    // upraveno díky MarcoCI za radu

    Zkus to:

    Funkce wantDelete(item, arr)( for (var i=0;i

    doufám, že vám to pomůže

    Nechat komentářeWithoutDeletedArray = commentsArray.filter((komentář) => !(comment.Id === commentId));

    Zde je verze, která používá funkci inArray jQuery:

    var index = $.inArray(položka, pole); if (index != -1) ( array.splice(index, 1); )

    Toho lze dosáhnout pomocí funkce lodash _.odstranit .

    var pole = ["tři", "sedm", "jedenáct"]; var evens = _.remove(pole, funkce(e) ( return e !== "sedm"; )); konzolový log(eventy);

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

    Opravdu nechápu, proč to nejde vyřešit

    Arr = arr.filter(hodnota => hodnota !== "sedm");

    Nebo možná chcete použít vanilku JS

    Arr = arr.filter(funkce(hodnota) (vrácená hodnota !== "sedm" ));

    Další varianta:

    If (!Array.prototype.removeArr) ( Array.prototype.removeArr = function(arr) ( if(!Array.isArray(arr)) arr=;//buďme milí k lidem, kteří vložili hodnotu bez pole tady.. to bych mohl být já! var that = this; if(arr.length)( var i=0; while(i) -1)( that.splice(i,1); )else i++; ) ) vrátit to; ))

    Je to opět indexOf() uvnitř smyčky, ale za předpokladu, že pole, které se má odstranit, je malé vzhledem k poli, které se má vymazat; každé smazání zkracuje smyčku while.

    To vám umožní provést následující:

    Var ary = ["tři", "sedm", "jedenáct"]; var aryWithoutSeven = ary.filter(funkce(hodnota) (​vrácená hodnota != "sedm" )); console.log(aryWithoutSeven); // vrátí ["tři", "jedenáct"]

    To bylo také uvedeno v tomto vlákně někde jinde: https://.com/a/20827100/293492

    Nepoužívejte možnost delete – vytvoří díru v poli, protože nereindexuje prvky po odstraněném prvku.

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

    Jedna vložka to zvládne

    Var ary = ["tři", "sedm", "jedenáct"]; // Odeberte položku "sedm" z pole var filterAry = ary.filter(funkce(e) ( return e !== "sedm" )) //=> ["tři", "jedenáct"] // V ECMA6 (šipka syntaxe funkce): var filterAry = ary.filter(e => e !== "sedm")

    To využívá funkci filtru v JS. Je podporován v IE9 a vyšší.

    filter() zavolá poskytnutou funkci zpětného volání jednou pro každý prvek v poli a vytvoří nové pole ze všech hodnot, pro které zpětné volání vrátí hodnotu, která má za následek hodnotu true. zpětné volání je voláno pouze pro indexy pole, kterým byly přiřazeny hodnoty; není volána pro indexy, které byly zrušeny nebo kterým nikdy nebyla přiřazena hodnota. Prvky pole, které neprojdou testem zpětného volání, jsou jednoduše přeskočeny a nejsou zahrnuty do nového pole.

    Takže v podstatě je to stejné jako všechna ostatní řešení pro (var key in ary) ( ... ), kromě toho, že for in je podporováno od IE6.

    Filtr je v zásadě pohodlný způsob, který vypadá mnohem lépe (a je řetězitelný) na rozdíl od konstruktoru for in (AFAIK).

    Zkontroluj to:

    For(var i v poli)( if(pole[i]=="sedm")( array.splice(i,1); break; ) )

    a ve funkci:

    Funkce removeItem(pole, položka)( for(var i v poli)( if(pole[i]==položka)( pole.splice(i,1); break; ) ) ) removeItem(pole, "sedm");

    Odstranění všech odpovídajících prvků z pole (nejen první se zde zdá být nejobecnější odpovědí):

    While ($.inArray(položka, pole) > -1) ( array.splice($.inArray(položka, pole), 1); )

    Použil jsem jQuery pro tvrdou práci, ale dostanete nápad, pokud chcete jít nativní.

    Trik je procházet polem od začátku do začátku, abyste si nepokazili indexy, když odebíráte prvky.

    Var deleteMe = function(arr, me)( var i = arr.length; while(i--) if(arr[i] === já) arr.splice(i,1); ) var arr = ["oranžová ","červená", "černá", "oranžová", "bílá", "oranžová" ]; deleteMe(arr , "oranžová");

    arr je nyní ["červená", "černá", "bílá"]

    Funkce cleanArrayOfSpecificTerms(pole,unwantedTermsArray) ( $.each(unwantedTermsArray, funkce(index, hodnota) (​var index = pole.indexOf(hodnota); if (index > -1) ( array.splice(index, 1); ) ) ); návratové pole; )

    Chcete-li použít, postupujte takto:

    Var notInclude = ["Ne","Ne","První","Poslední","Předchozí","Další", "psi","kočky"]; var splitTerms = ["volání", "log", "psi", "kočky", "téma", "změna", "cena"]; cleanArrayOfSpecificTerms(splitTerms,notInclude)

    Zkoušel jsem použít funkci z jbaronu výše, ale zjistil jsem, že musím zachovat původní pole nedotčené pro pozdější použití a vytvořit nové pole, jako je toto:

    var newArray = referenceArray;

    Funkce newArrRemoveItem(pole, položka, novépole)( for(var i = 0; i< array.length; i++) { if(array[i]!=item){ newArray.push(array[i]); } } }

    Pak to používám takto:

    Var ID plavidla = záznam.get("ID plavidla"); var otherVessels = new Array(); newArrRemoveItem(vesselArr,vesselID,otherVessels);

    Nyní plavidloArr zůstává nedotčeno a pokaždé, když spustím výše uvedený kód, pole otherVessels obsahuje všechny prvky CAID kromě posledního.

    indexOf je možnost, ale její implementace v podstatě prohledává hodnotu v celém poli, takže doba provádění roste s velikostí pole. (takže je to tuším v každém prohlížeči, kontroloval jsem jen Firefox).

    Nemám IE6 ke kontrole, ale nazval bych to jistou sázkou, že tímto způsobem můžete zkontrolovat alespoň milion prvků pole za sekundu na téměř jakémkoli klientském počítači. Pokud [velikost pole] * [požadavky na vyhledávání za sekundu] může narůst na více než milion, měli byste zvážit jinou implementaci.

    V zásadě můžete použít objekt k vytvoření indexu pro vaše pole takto:

    Var index=("tři":0, "sedm":1, "jedenáct":2);

    Jakékoli normální prostředí JavaScriptu vytvoří vyhledávací index pro takové objekty, takže můžete rychle převést klíč na hodnotu bez ohledu na to, kolik vlastností má objekt.

    Toto je pouze základní metoda, v závislosti na vašich potřebách můžete zřetězit více objektů a/nebo polí, aby bylo možné rychle vyhledat stejná data pro různé vlastnosti. Pokud specifikujete své konkrétní potřeby, mohu navrhnout konkrétnější datovou strukturu.

    //Tato funkce umožňuje odstranit sudé pole z pole var removeFromArr = function(arr, elem) ( var i, len = arr.length, new_arr = , sort_fn = funkce (a, b) ( return a - b; ); for ( i = 0 i< 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; }

    Příklad použití

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

    Nechť arr = ; konzolový log(arr); //výsledek nech index = arr.indexOf(30); if (index > -1) ( arr.splice(index, 1); ) console.log(arr); //výsledek

    var index = array.indexOf("položka"); if(index!=-1)( array.splice(index, 1); )