internet pencereler Android
Genişletmek

JQuery bir dizi öğesini değere göre siler. Belirli bir javascript dizi öğesi nasıl silinir? Dizi öğesini kaldırmak için Sil işlevini kullanma

vardiya

Kullanın. Dizinin ilk elemanını çıkarmak için.

Örneğin:

Var array \u003d; array.shift ();

dizi şunlara yol açar:

Örneğin:

Var array \u003d; array.pop ();

dizi şunlara yol açar:

Her iki yöntem de uzak bir elemanı döndürür;

uzanmak

Kullanım.Splice () dizideki bir dizi öğeyi kaldırmak için. .Splice () İki parametre, bir başlangıç \u200b\u200bdizini ve çıkarılacak isteğe bağlı bir öğe sayısını alır. İkinci parametre değilse .Splice (), tüm öğeleri ilk dizinden dizinin sonuna kadar siler.

Örneğin:

Var array \u003d; array.splice (1, 2);

dizi içermektedir:

Dönüş array.splice (), uzak öğeleri içeren yeni bir dizidir. Yukarıdaki örnekte, geri ödeme aşağıdaki gibi olacaktır:

Böylece, ikinci parametrenin azaltılması, diziyi, ilk ucu belirtilen indeksle birlikte iki diziye etkili bir şekilde parçalayın:

Var array \u003d; Array.Splice (2);

Dizi içeren ve iadeleri bırakır.

silmek

Dizi uzunluğunu değiştirmeden bir öğeyi bir diziden çıkarmak için Sil kullanın:

Var array \u003d; Konsol.log (array.length); // 5 Dizi Sil; Console.log (dizi); // console.log (array.length); // beş

Array.Prototype. Uzunluğu.

Uzunluk Değer Dizisi atama Uzunluğu belirli bir değere değiştirir. Yeni bir değer, dizinin uzunluğundan daha azsa, elemanlar değerin sonundan çıkarılır.

Dizi \u003d; Array.Length \u003d 2; Console.log (dizi); //

Javascript. Operatörü sil. Bir özelliği bir nesnedeki kaldırır; Aynı mülke daha fazla referans yoksa, sonunda otomatik olarak serbest bırakılır.

Bu etkileşimli örnek için kaynak, bir GitHub deposunda saklanır. Eğer "interaktif örnekler projesine katkıda bulunmayı seviyorsanız, lütfen https://github.com/mdn/interactive-exampls klonlayın ve bize bir çekme isteği gönderin.

Sözdizimi

silmek. İfade

Var ile tanımlanan herhangi bir değişken, yapılandırılamaz olarak işaretlenmiştir. Aşağıdaki örnekte, maaş yapılandırılamaz ve silinemez. Sıkı olmayan modda, silme işlemi false döndürür.

Fonksiyon çalışanı () () (maaş; var maaşı;) çalışanı ();

"Aynı kodun katı modda nasıl davrandığını görelim. False'yı iade etmek yerine, ifade bir sözdizimser oluşturur.

"Sıkı kullanın"; Fonksiyon çalışanı () () () (maaş silin; // syntaxerror var maaş;) // Benzer şekilde, bir fonksiyona doğrudan erişim // Sil ile herhangi bir doğrudan erişim, bir sözdizimi işlevi () () () (// bazı kodları) silmek için bir sözdizimi silecektir; // Sözdizimi hatası.

Örnekler.

// global kapsamda mülk admin adını oluşturur. adminName \u003d "xyz"; // Global kapsamdaki empsount değerini yaratır. // Var olduğumuzdan bu yana, bu yapılandırılamaz olarak işaretlenmiştir. Aynısı izin ve konst için de geçerlidir. var empcount \u003d 43; ÇalışanEletler \u003d (İsim: "XYZ", Yaş: 5, Tanım: "Geliştirici"); // AdminName, küresel kapsamın bir özelliğidir. // var, // olmadan oluşturulduğundan ve bu nedenle yapılandırılabilir olduğundan silinebilir. Admin adını sil; // True // tersine döndürür, EMPCOUNT, VAR kullanıldı. EmpCount Sil; // FALSE // Sil'dir, nesnelerden gelen özellikleri kaldırmak için kullanılabilir. DELETEEDETAILS.NAME; // doğru döndürür. // Mülkiyet yoksa bile, Sil "Doğru" i döndürür. Çalışanları sil.Slary; // True // Sil'dir, yerleşik statik özellikleri etkilemez. Math.pi dosyasını sil; // false // çalışanEvetails döndürür, küresel kapsamın bir mülküdür. // "var" olmadan tanımlandığından, yapılandırılabilir şekilde işaretlenmiştir. Çalışanları silmek; // True Fonksiyonu F () () (var z \u003d 44; // delete) döndürür. Yerel değişken adlarını silmez Z; // false döndürür)

sil ve prototip zinciri

Aşağıdaki örneklerde, bir nesnenin kendi özelliğini silerken, aynı ada sahip bir özellik prototip zincirinde mevcuttur:

Foo Foo () () (this.bar \u003d 10;) foo.prototype.bar \u003d 42; var foo \u003d yeni foo (); // foo.bar // kendi mülkü ile ilişkilidir. Console.log (foo.bar); // 10 // // Foo nesnesindeki kendi mülkünü silin. foo.bar sil; // True // foo.bar'ı geri döndürür // prototip zincirinde hala mevcuttur. Console.log (foo.bar); // 42 // Prototip üzerindeki özelliği silin. foo.prototype.bar dosyasını silin; // True // "Çubuk" mülkü, artık // silinmiş olduğundan foo'dan miras alınamaz. Console.log (foo.bar); // Tanımsız.

Dizi öğelerini silme.

Bir dizi öğesini sildiğinizde, dizi uzunluğu etkilenmez. Bu, dizinin son öğesini silseniz bile tutar.

Sil operatörü bir dizi öğesini kaldırdığında, o eleman artık dizide değil. Aşağıdaki örnekte ağaçlar silme ile kaldırılır.

Var ağaçları \u003d ["redwood", "bay", "sedir", "meşe", "akçaağaç"]; Ağaçları silmek; (3 ağaçlarda) (// bu yürütülmezse)

Bir dizinin varlığını istiyorsanız, ancak tanımsız bir değeri istiyorsanız, silme operatörü yerine tanımsız değeri kullanın. Aşağıdaki örnekte ağaçlar tanımlanmamış değer atanır, ancak dizi öğesi hala var:

Var ağaçları \u003d ["redwood", "bay", "sedir", "meşe", "akçaağaç"]; Ağaçlar \u003d tanımsız; (3 ağaçlarda) (// bu yürütülürse)

Bunun yerine, dizinin içeriğini değiştirerek bir dizi öğesini kaldırmak istiyorsanız, Splice yöntemini kullanın. Aşağıdaki örnekte, ağaçlar dizden tamamen eklentiler:

Var ağaçları \u003d ["redwood", "bay", "sedir", "meşe", "akçaağaç"]; Ağaçlar.Splice (3.1); Konsol.log (ağaçlar); // ["Redwood", "Bay", "Cedar", "Maple"]

Özellikler.

Şartname Durum. Yorum Yap
ECMASCript Son Taslak (ECMA-262)
Taslak.
ECMASCRIPT 2015 (6. Baskı, ECMA-262)
Bu şartnamede "silme operatörünün" tanımı.
Standart.
ECMASCRIPT 5.1 (ECMA-262)
Bu şartnamede "silme operatörünün" tanımı.
Standart.
ECMAScript 1st Edition (ECMA-262)
Bu şartnamede "silme operatörünün" tanımı.
Standart. İlk tanım. JavaScript 1.2'de uygulandı.

Tarayıcı Uyumluluğu

Bu sayfadaki uyumluluk tablosu yapılandırılmış verilerden oluşturulur. Eğer verilere katkıda bulunmayı seviyorsanız, lütfen https://github.com/mdn/browser-compat-data bölümüne bakın ve bize bir çekme isteği gönderin.

GitHub'daki Uyumluluk Verilerini Güncelleme

Masaüstü.MobilSunucu
Krom.Kenar.Firefox.Internet Explorer.Opera.Safari.Android WebView.Android için kromAndroid için FirefoxAndroid için OperaİOS'da Safari.Samsung InternetNode.js.
silmek.Chrome Tam Destek 1Kenar tam desteği 12Firefox Tam Destek 1Yani tam destek 4Opera tam destek EvetSafari Tam Destek EvetWebView Android Tam Destek 1Krom Android Tam Destek 18Firefox android tam destek 4Opera android tam destek EvetSafari iOS Tam Destek EvetSamsung Internet Android Tam Destek 1.0nodejs tam destek evet

Efsane.

Tam destek Tam destek

Çapraz tarayıcı notları

ECMAScript, nesnelerin yineleme sırasını uygulamaya bağlı olarak, tüm büyük tarayıcıların, ilk önce gelen en erken eklenen özelliğe dayanarak (en azından prototip üzerinde olmayan özellikler için) bir yineleme sırasını desteklediği gibi görünebilir. Bununla birlikte, Internet Explorer'ın durumunda, biri özelliği kullandığında, bazı kafa karıştırıcı davranış sonuçları, diğer tarayıcının, nesne değişmezleri gibi basit nesneleri sipariş edilen ortak diziler gibi kullanmalarını önler. Explorer'da, mülk iken değer vermek Gerçekten de tanımlanmamıştır, eğer bir daha sonra bir mülkü geri eklerse, aynı adla tekrarlanırsa eski. Konum - Yineleme dizisinin sonunda değil, özelliği sildikten sonra beklenebilir ve daha sonra geri ekledi.

Dizilerle çalışma yöntemlerinin sadece bir kısmını tanımladım.

Burada, dizinin unsurlarını çıkararak, ekleme hakkında konuşacağız. Diziyi çevirip sıralama, ayrıca kesim, değiştirme ve birleştiren dizileri.

Bir diziye öğeleri ekleme.

Bir diziye yeni öğeler eklemek için uzunluk özelliğini kullanabilirsiniz:

Var myarray \u003d ["Apple", "Microsoft", "Google", "Facebook"]; myarray \u003d "Yahoo!"; Console.log (myarray); // [Apple, "Microsoft", "Google", "Facebook", "Yahoo!"]

İşe yarayacak çünkü Dizinin elemanları sıfırdan sayılabilir ve uzunluk. birim başına daha. Uzunluk. Her zaman eşdeğer endeks + 1.Bu nedenle, dizinin sonuna yeni bir eleman eklemek çok kolaydır. Garip, ancak dizinin uzunluğundan çok daha büyük bir konuma bir öğe ekleyebilirsiniz:

Var myarray \u003d ["Jimi Hendrix", "Eric Clapton", "Jimmy Page", "Keith Richards"]; myarray \u003d "Lindsey Buckingham"; Console.log (myarray); // ["Jimi Hendrix", "Eric Clapton", "Jimmy Page", "Keith Richards", tanımsız × 95, "Lindsey Buckingham"] konsol.log (myarray.length); // 100

Yorumlarda gösterildiği gibi, 95 boş slot ve "Lindsey Buctingham" unsuru dizinin sonuna eklenecektir. Bundan sonra, 100 uzunluğunu alacağız. Bir diziye yeni bir öğe eklemenin bir başka yolu yöntemi kullanmaktır. İt ():

Var myarray \u003d ["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"]

Yöntem İt () Daima dizinin yeni bir uzunluğunu döndürür (bizim durumumuzda 5). Kullanarak bir öğe ekleyebilirsiniz splice ():

Var myarray \u003d ["Acorn", "Kayın", "MONGONGO", "MACADAMIA"]; myarray.splice (2, 0, "Kaju"); // indeks 2 konsoluna (myarray) "Kaju" ekler. // ["Acorn", "Kayın", "Kaju", "Mongongo", "Macadamia"]

İkinci argüman 0 olduğunda, bu, hiçbir öğenin kaldırılmayacağı anlamına gelir ve bu nedenle daha sonraki tüm argümanlar, diziye ilk argümanda belirtilen pozisyona eklenecektir.

Elementlerin diziden çıkarılması

Elemanı çıkarın, eklemek yerine biraz daha karmaşıktır. Bir öğeyi dizinin sonundan çıkarmak için kullanabilirsiniz. pop ():

Var myarray \u003d ["7-up", "Sprite", "Ginger Ale", "Limonata"]; myarray.pop (); Console.log (myarray); // ["7-up", "Sprite", "Ginger Ale"]

Yöntem pop () Dizi her zaman dizideki son öğeyi kaldırır ve iade eder.

Ayrıca kullanabilirsin splice () yöntem:

Var myarray \u003d ["Cassava", "hindistan cevizi", "lupin", "rhubarb"]; myarray.splice (2, 1); // bir öğeyi indeks 2 konsol.log (myarray) ile silin; // ["Cassava", "Nutmeg", "Rhubarb"]

Yöntemin aksine splice (), Öğeler eklemek için kullanılan, burada ikinci argüman 1, bir öğeyi indeks 2 (veya 3. hesabı) ile çıkarmak istediğimizi söylüyor. Bu durumda, "Lupin" unsuru emekli oldu.

Operatörü kullanarak bir dizi öğesini silebilirsiniz. sil:

Var myarray \u003d ["bayt haydut", "Eliza", "Jeefo", "Michelangelo"]; Console.log (myarray.length); // 4 MyArray'i sil; // Eliza Console.log (MyArray.Length) delete; // 4 konsol.log (myarray); // ["bayt haydut", undefined × 1, "jeefo", "michelangelo"]

İlk önemli not: sil () Elemanı çıkardıktan sonra dizinin uzunluğunu değiştirmez (dizideki son element olsa bile). İkinci: sil () Çıkarılmış öğenin değerini tanımsız olarak değiştirir, bu nedenle temas ederken myarray \u003d tanımsız..

Bir öğeyi dizisinden çıkarmak için iyi bir yol - John Resig'in Array.Remove'u kullanın. Kullanma örneğinin altında, sayfasından alınmış:

// Dizi Kaldır - John Resig (MIT Lisanslı) array.prototype.remove \u003d fonksiyonu (from, to) (VaR Rest \u003d this.Slice ((to || dan) + 1 || This.Length); Bu \u003d Dan.< 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);

Kararını, Viral Patel'in, alt çizgilerindeki işlevlerden biri veya JQuery'nin GREP'sinde () olduğunu görmek isteyebilirsiniz.

Gelişmiş, B. Javascript. Bir yöntem var vardiya () Hangi dizideki ilk elemanı kaldırır ve değerini döndürür. Kodu görelim:

Var myarray \u003d ["Matt Kramer", "Jason Bieler", "Tom Dilini", "Phil Varone"]; Console.log (myarray.length); // 4 var firstItem \u003d myarray.shift (); Console.log (firstItem); // matt kramer konsol.log (myarray.length); // 3 konsol.log (myarray); // ["Jason Bieler", "Tom Dilini", "Phil Varone"]

Yöntemi kullanarak vardiya () Öğeyi sileriz, ancak değerini FirstItem değişkenimize kaydettik. Dizinin uzunluğu 4 ile 3 arasında değişti.

Bu yöntem, yöntemle birlikte faydalı olabilir. İt (). Onları birlikte kullanmak, dizideki bir öğe kuyruğunu etkili bir şekilde oluşturabiliriz. Öğeyi başlangıçtan çıkararak ve sonuna yeni bir tane ekleyerek dizinin uzunluğunu koruyoruz.

Aksine, yöntemi kullanabiliriz unshift () Dizinin başlangıcına bir eleman eklemek için:

Var myarray \u003d ["apito", "Castanets", "maraca"]; Console.log (myarray.length); // 3 myarray.unshift ("Chime Bar", "Tan-Tan"); Console.log (myarray.length); // 5 konsol.log (myarray); // ["Chime Bar", "Tan-Tan", "Apito", "Castanets", "Maraca"]

Yöntemi kullanarak unshift () bir yöntemle pop () Başa eleman ekleyerek ve dizinin sonundan çıkan öğeleri ekleyerek ters yönde kuyruk oluşturabilirsiniz.

Dizinin unsurlarını açmak ve sıralamak.

Dizideki elemanları açmak için kullanabiliriz tersine çevirmek ():

Var myarray \u003d ["geri sayım", "final", ""]; Console.log (myarray); // ["geri sayım", "final", "the"] myarray \u003d myarray.reverse (); Console.log (myarray); // ["Nihai geri sayım"]

Dizinin unsurlarını alfabetik sıraya göre sıralayın Belki yöntemi kullanarak Çeşit ():

Var ryarray \u003d ["xylophones", "zebraralar", "juggernauts", "avokados"]; Console.log (myarray); // ["xylophones", "zebralar", "juggernauts", "avocados"] myarray \u003d myarray.sort (); Console.log (myarray); // ["avocados", "juggernauts", "ksilofonlar", "zebralar"]

Ancak sayılarla çalışmayacak.

Var myarray \u003d; Console.log (myarray); // myarray \u003d myarray.sort (); Console.log (myarray); //

Numaraları sıralamak istiyorsanız, aşağıdaki kodu kullanabilirsiniz:

Fonksiyon karşılaştırıcıları (A, B) (A - B döndürme;) var myarray \u003d; Console.log (myarray); // myarray \u003d myarray.sort (karşılaştırıcılar); Console.log (myarray); //

Yukarıda gösterildiği gibi, içine girilen basit bir işlev kullanılarak çeşit () Numaraları içeren bir dizi doğru şekilde sıralanacaktır.

Dizilerin birleştirilmesi.

2 veya daha fazla diziyi birleştirebilir ve bağlı dizilerin unsurlarını içeren 1 diziyi alabilirsiniz. Bunu yapmak için yöntemi kullanın cONCAT ():

Var myarray \u003d ["Jay Ferguson", "Andrew Scott"]; Var myarray2 \u003d ["Chris Murphy", "Patrick Pentland"]; var mynewarray \u003d ryarray.concat (myarray2); Console.log (mynewarray); // ["Jay Ferguson", "Andrew Scott", "Chris Murphy", "Patrick Pentland"]

Var myarray \u003d ["Jay Ferguson", "Andrew Scott"]; var mynewarray \u003d ryarray.concat ("Chris Murphy", "Patrick Pentland"); Console.log (mynewarray); // ["Jay Ferguson", "Andrew Scott", "Chris Murphy", "Patrick Pentland"]

Dizinin ayrılması.

Bir işlev kullanarak mevcut bir dizide 1 veya daha fazla öğe içeren yeni bir dizi oluşturabiliriz. dilim ():

Var myarray \u003d ["vokal", "bas", "gitar", "davul", "elmalar", "portakal"]; var mynewarray \u003d myarray.slice (4); Console.log (mynewarray); // ["elmalar", "portakal"]

Yöntem dilim () 1 veya 2 argüman alır. 1 argüman aktarılırsa (dizin), daha sonra yeni dizi, bu endeksten başlayarak, eski'nin tüm unsurlarından oluşturulur. 2 argüman varsa, yeni dizi, ilk argümandan, ilk argümandan, ikinci parametrede iletilen endekste, ikincisi de dahil olmak üzere, ilk argümandan başlayarak oluşturulur. Daha net olmak için, aşağıdaki kodu görelim:

Var myarray \u003d ["vokal", "bas", "gitar", "davul", "elmalar", "portakal"]; var mynewarray \u003d myarray.slice (0, 4); Console.log (mynewarray); // ["Vokaller", "Bas", "Gitar", "Davullar"]

Dizideki elemanların değiştirilmesi.

Kullanırız splice () Elemanları dizinden çıkarmak için, ancak yeni öğeler için dizideki öğeyi de değiştirebiliriz:

Var myarray \u003d ["Rivers Cuomo", "Patrick Wilson", "Brian Bell", "Matt Sharp"]; myarray.splice (3, 1, "Scott Shiner"); // 1 öğeyi bir indeks 3 konsol.log (myarray) ile değiştirin; // ["Rivers Cuomo", "Patrick Wilson", "Brian Bell", "Scott Shriner"]

Yöntem splice () Her zaman silinmiş olan elemanları içeren bir dizi iade edin. 2. satırda 1 eleman "Brian Bell" i iade edilecektir.

Sonuç

Bu makaleler, JavaScript'teki dizilerle nasıl çalışılacağını açıkladı. Bazı ek ürünler, bu yazıya dahil etmediğim MDN'de görüntülenebilir. Sadece IE9 +'da çalışıyorlar, bu yüzden işe yaramaz olabilirler.

Eklemek için bir şey var mı? Yoksa dizileri yönetmenize yardımcı olacak ilginç bir kütüphaneyi biliyor musunuz? Yorum lütfen!



Bir öğeyi bir dizi değerinden nasıl kaldırılır? (yirmi)

// tavsiye için Marcoci tarafından düzenlendi

bunu dene:

İşlevi wantdelete (öğe, arr) (için (var i \u003d 0; i

umarım bu sana yardımcı olmuştur

Bir öğeyi JavaScript dizisinden çıkarmanın bir yolu var mı?

Dizi verilen:

Var ary \u003d ["üç", "yedi", "on bir"];

Gibi bir şeyler yapmak istiyorum:

Removeitemm ("yedi", ary);

Splice () gördüm (), ancak pozisyon numarasını sadece siler, oysa öğeyi değerine göre kaldırmak için bir şeye ihtiyacım var.

Commarkswithoutdeledarray \u003d commentarray.filter ((Yorum) \u003d\u003e! (Yorum.id \u003d\u003d\u003d comment));

İşte, InArray JQuery işlevinin kullanıldığı sürümü:

Var indeksi \u003d $ .inarray (öğe, dizi); Eğer (indeks! \u003d -1) (Array.Splice (Dizin, 1);)

Bunu işlevi kullanarak başarabilirsiniz Lodash. _.Kaldır.

var array \u003d ["üç", "yedi", "on bir"]; var evens \u003d _.Remove (dizi, işlev (e) (e! \u003d\u003d "yedi";)); Console.log (evrenler);

Const _ \u003d gerektirir ("Lodash"); _.without (2); // -\u003e

Aslında, neden çözmenin imkansız olduğunu anlamıyorum.

Arr \u003d arr.filter (değer \u003d\u003e değeri! \u003d\u003d "yedi");

Ya da belki vanilya js kullanmak istiyorsun

Arr \u003d arr.filter (dönüş değeri! \u003d\u003d "yedi"));

Başka bir varyant:

İf (! Array.prototype.removearr) (array.prototype.removearr \u003d fonksiyon (ARR) (eğer (! Array.isarray (arr)) arr \u003d; // let "insanlara iyi davranalım. Burada .. bu benim! Var \u003d bundan daha; eğer (arr.length) (var i \u003d 0; -1) (o.Splice (I, 1);) başka i ++; )) Bunu iade; ))

Döngünün içindeki bu index () yine, ancak kaldırılması için bir dizinin temizlenmesi gereken diziye göre küçük olduğu varsayımı altında; Her çıkarma, iken döngüyü azaltır.

Bu, aşağıdakileri yapmanızı sağlar:

Var ary \u003d ["üç", "yedi", "on bir"]; Var arywithoutseven \u003d ary.filter (dönüş değeri! \u003d "Yedi")); Konsol.log (arywithoutseven); // ["üç", "on bir"] döndürür

Ayrıca bu konuda başka bir yerde belirtildi: https: //.com/a/293492

Seçeneği Sil ile kullanmayın - dizideki bir delik açar, çünkü uzak elemandan sonra elemanları artırmaz.

\u003e Array.prototype.remove \u003d İşlev (v) (... Bunu sil ...); \u003e Var myarray \u003d ["3", "24", "55", "2"]; undefined\u003e myarray.remove ("55"); undefined\u003e myarray ["3", "24", "2"]

Bir astar bunu yapacak

Var ary \u003d ["üç", "yedi", "on bir"]; // "yedi" öğesini dizi var filteredary \u003d ary.Filter (e) (e) (e) (e! \u003d\u003d "yedi")) // \u003d\u003e ["üç", "11"] // ECMA6'da (ok) İşlev Sözdizimi): var filteredary \u003d ary.Filter (e \u003d\u003e E! \u003d\u003d "yedi")

Bu, JS'deki filtre işlevini kullanır. IE9 ve daha yüksek olarak desteklenir.

filtre (), dizideki her bir eleman için bir kez bir kez geri arama özelliğine neden olur ve geri çağrının gerçek olana yol açan bir değer getirdiği yeni bir dizi oluşturur. Geri arama, yalnızca değer verilen dizi endeksleri için çağrılır; Silinmiş veya hiçbir zaman değerlere atanmamış endeksler için çağrılmaz. Bir geri arama testi geçirmeyen bir dizi elemanları basitçe atlanır ve yeni diziye dahil değildir.

Böylece, çoğunlukla, bu, IE6'nın IE6 olarak desteklenmesi dışında, (ARY'deki var Anahtarı) (...) çözümleri için herkesle aynıdır.

Prensip olarak, filtre, (AFAIK) tasarımcısının aksine, çok daha iyi görünen (ve zincir) görünen bir rahatlık yöntemidir.

Şunu bir kontrol et:

İçin (dizide var i) (eğer (dizi [i] \u003d\u003d "yedi") (Array.Splice (I, 1); Break;)))

ve fonksiyonda:

Fonksiyon Refooriem (dizi, öğe) (eğer (dizi [i] \u003d\u003d öğe) (Array.Splice (I, 1); Break;)))))))))))))), "Dizisi," yedi ");

Tüm eşleşen elemanların dizinden çıkarılması (ve sadece ilk değil, burada en yaygın cevap gibi göründüğü gibi):

İken ($ .inarray (öğe, dizi)\u003e -1) (array.splice ($. Wahray (eşya, dizi), 1);)

Zor iş için jquery kullandım, ancak ana dilinize gitmek isteyip istemediğinizi anladınız.

İşin püf noktası, başlangıçtan önce bir diziden geçmesidir, böylece öğeleri çıkarırken dizinleri bozmazsınız.

Var deleteme \u003d fonksiyon (arr, me) (var i \u003d arr.Length; iken (ben--) eğer (arr [i] \u003d\u003d\u003d me) arr.splice (i, 1);) var arr \u003d ["turuncu "," Kırmızı "," siyah "," turuncu "," beyaz "," turuncu "]; Deleteme (arr, "turuncu");

Şimdi ["kırmızı", "siyah", "beyaz"]

Fonksiyon CleanArrayOfSpecificterMS (dizi, istenmeyen) ($ .ECHECH (UnwantEtterMarray, Function (Dizin, Değer) (IFEX (Dizin\u003e -1) (Array.Splice (Dizin, 1);)); Dönüş Dizisi;)

Kullanmak için şu adımları izleyin:

Var notinclude \u003d ["değil", "hayır", "birinci", "son", "önceki", "Sonraki", "Köpekler", "Kediler"]; var splitterms \u003d ["Arama", "log", "Köpekler", "Kediler", "Konu", "Değişim", "Fiyatlandırma"]; Cleanarrayofspecificterms (splitterms, notinclude)

İşlev yöntemini yukarıdaki JBaron'dan kullanmaya çalıştım, ancak orijinal diziyi daha sonra kullanacak şekilde değişiklik yapmadan kaydetmem gerektiğini ve aşağıdaki gibi yeni bir dizi oluşturmam gerektiğini buldum:

Var newarray \u003d referanceArray;

Fonksiyonu newarrremoveiem (dizi, öğe, newarray) (için (var i \u003d 0; i< array.length; i++) { if(array[i]!=item){ newArray.push(array[i]); } } }

Sonra böyle kullanırım:

Var vselid \u003d record.get ("vesselid"); Var disecherselss \u003d yeni diziler (); NewArrremoveiem (Vesselrr, Vesselid, DiğerVezeler);

Şimdi Shiparr bozulmadan kalır ve yukarıdaki kodu her yaptığımda, diğerİveler dizileri, son kafes öğesi dışında her şeyi içerir.

endeks dosyası bir seçenektir, ancak uygulaması temel olarak tüm dizi aramadır, bu nedenle yürütme süresi dizinin boyutuyla büyür. (Yani bu her tarayıcıda, sanırım sadece Firefox'u kontrol ettim).

Bir IE6'yı kontrol etmek için yok, ancak saniye başına en az bir milyon unsurunu kontrol edebileceğiniz güvenli bir teklif diyebilirim, bu nedenle pratikte herhangi bir müşteri makinede. [Dizinin boyutu] * [Saniyede arama sorguları] bir milyondan fazla büyüyebilirse, başka bir uygulamayı düşünmelisiniz.

Temel olarak, örneğin diziniz için bir dizin oluşturmak için bir nesneyi kullanabilirsiniz:

Var indeksi \u003d ("üç": 0, "yedi": 1, "on bir": 2);

Herhangi bir Normal JavaScript ortamı, bu tür nesneler için bir arama dizini oluşturur, böylece kısa bir nesnenin nesnesine sahip olduğuna bakılmaksızın, anahtarın değerinin değerini çevirebilirsiniz.

Bu sadece temel bir yöntemdir, ihtiyaçlarınıza bağlı olarak, aynı verileri farklı özellikleri aramak için hızlı bir şekilde erişilebilir hale getirmek için birden fazla nesneyi ve / veya diziyi birleştirebilirsiniz. Özel ihtiyaçlarınızı belirtirseniz, daha spesifik bir veri yapısı sunabilirim.

// Bu fonksiyon, diziyi Array Var RemoveFromarr \u003d fonksiyonundan (Arr.Length, New_Arr \u003d, Sort_FN \u003d fonksiyonu (A, B); (i \u003d 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; }

Kullanım örneği

Var arr \u003d, "ABC", 1, "1", 1]; Removefromarr (arr, 1); // ["2", "ABC", "1"] var arr \u003d [, 2, "a" ,,]; Removefromarr (arr,); //]

ARR \u003d; Console.log (arr); // sonuç index \u003d arr.indexof (30); if (indeks\u003e -1) (ArR.Splice (Dizin, 1);) konsol.log (arr); // Sonuç

Var indeksi \u003d array.indexof ("item"); Eğer (indeks! \u003d - 1) (Array.Splice (Dizin, 1);)