2013-02-01 12 views
9

İki diziyi bir ile birleştirmek istiyorum. İşi yapabileceğimiz iki fonksiyon buldum; Biri jQuery.merge(), diğeri ise concat() işlevinde yerleşik JavaScript'dir. Aynı şeyi yapıyorlar ve ben this'u buldum. Diyor ki: "Birleştirme, orijinal diziden geçtiği ve yeni öğeleri eklediği için daha küçük bir ayak izi oluşturur. Concat, yerleşik bir Javascript işlevidir ve daha hızlı olmalı, ancak daha büyük bir alana sahiptir." Bu ifadenin doğru olup olmadığından emin değilim ve başka farklılıklar var mı?jQuery.merge() ve JavaScript native function concat() arasındaki fark nedir?

+1

Bir fark $ .merge() fonksiyonu yıkıcı olmasıdır. Öğeleri ikinci öğeden eklemek için ilk parametreyi değiştirir. concat() yapmaz. Yeni bir dizi yapar. – j08691

cevap

10

alıntı doğru ve iki işlev de aynı şeyi yapmayın Yani tek tek (ilk param) içine iki dizileri birleştirir ve ikinci hem de yeni bir dizi oluşturur.

o ifade ettiğini "ayak izi", herhangi bir anda kullanımda olacak bellek maksimum miktardır. Birleştirme, yalnızca ikinci diziyi çoğaltacağından beri, daha az bellek kullanmalıdır, çünkü herhangi bir zamanda, yalnızca bellekte 2 diziye sahip olması gerekir.

3 diziler olması gerekir işlevi yerleşik ve yeni bir dizi sıralı olarak her iki dizide boyutu ile aynı olması gerekir. 1000 dizi, A ve B elemanlarının ve C gibi birleştirilmiş bir dizi varsayarsak

:

  • Birleştirme 1000 + 1000 [a> c], 1000 [b] veya 3000 noktalar gerekir.
  • Concat gerekir 1000 + 1000 [c], 1000 [a] 1000 [b] veya 4000 noktalar.

Kullanımda çok fazla bellek varsa daha az bellek daha hızlı olabilir, daha az hareket daha hızlı olabilir. tmaster en durumda

Some tests I found

+0

http://jsperf.com/arrays-jquery-merge-vs-concat –

1

, o JQuery.merge jQuery Nesnesi birleştirmek için kullanılan olabilir, 2 arrays.Actually birleştirmek jQuery.merge() kullanılan Array.Here jQuery olduğu ile (jQuery nesne uzunluğu da desteklemek vardır) .merge() 'in kodu: JQuery nesne için Yani

merge: function(first, second) { 
    var len = +second.length, 
     j = 0, 
     i = first.length; 

    for (; j < len; j++) { 
     first[ i++ ] = second[ j ]; 
    } 

    first.length = i; 

    return first; 
}, 

uzunluk özelliği vardır, ilk JQuery nesne .Here için 0,1 gibi ikinci JQuery nesne attr kopyalamak için birleştirme kullanabileceğiniz bir örnektir:

pushStack: function(elems) { 

    // Build a new jQuery matched element set 
    var ret = jQuery.merge(this.constructor(), elems); 

    ... 

    return ret; 
}, 

this.constructor() bir jQuery nesnesi döndürür, ayrıca seçer. Ancak concat yapamaz, bu sadece Array ile kullanılabilir. Bu da concat ve JQuery.merge arasındaki farktır.

+0

Sanırım dizilişe benzer elemanlar da yapabilirsiniz. – deostroll

İlgili konular