SORU
18 EKİM 2009, Pazar


Javascript iki diziyi birleştirme ve de-yinelenen öğeleri

İki JavaScript diziler var:

var array1 = ["Vijendra","Singh"];
var array2 = ["Singh", "Shakya"];

Çıkış olmak istiyorum

var array3 = ["Vijendra","Singh","Shakya"];

Çıkış dizisi tekrarlanan sözcükler çıkarılmalıdır.

Nasıl ben orijinal dizi içine aynı sırayla her diziden sadece benzersiz öğeleri almak, böylece JavaScript iki diziyi birleştirme?

CEVAP
18 EKİM 2009, Pazar


Sadece diziler (kaldırma yinelenen olmadan) birleştirmek için kullanın. Array.concat:

var array1 = ["Vijendra","Singh"];
var array2 = ["Singh", "Shakya"];

var array3 = array1.concat(array2); // Merges both arrays
// [ 'Vijendra', 'Singh', 'Singh', 'Shakya' ]

'Yoktur' yinelenen (ECMA-262 aslında harika olurdu Array.forEach bunun için vardır) kaldırmak için, el ile yaptığımız: . inşa beri

Array.prototype.unique = function() {
    var a = this.concat();
    for(var i=0; i<a.length;   i) {
        for(var j=i 1; j<a.length;   j) {
            if(a[i] === a[j])
                a.splice(j--, 1);
        }
    }

    return a;
};

Daha sonra kullanmak için:

var array1 = ["Vijendra","Singh"];
var array2 = ["Singh", "Shakya"];
// Merges both arrays and gets unique items
var array3 = array1.concat(array2).unique(); 

Bu da diziler (i.sırasını koruyacaktır e, gerekli hayır sıralama).

DÜZENLEME:

Birçok kişi Array.prototype for in döngüler prototip büyütme hakkında rahatsız olduğundan, burada kullanmak için daha az invaziv bir yoludur:

function arrayUnique(array) {
    var a = array.concat();
    for(var i=0; i<a.length;   i) {
        for(var j=i 1; j<a.length;   j) {
            if(a[i] === a[j])
                a.splice(j--, 1);
        }
    }

    return a;
};

var array1 = ["Vijendra","Singh"];
var array2 = ["Singh", "Shakya"];
    // Merges both arrays and gets unique items
var array3 = arrayUnique(array1.concat(array2));

ES5 bulunduğu ilerici tarayıcılar ile çalışmak için yeterince şanslı olanlar, Object.defineProperty kullanabilirsiniz:

Object.defineProperty(Array.prototype, 'unique' {
    enumerable: false,
    configurable: false,
    writable: false,
    value: function() {
        var a = this.concat();
        for(var i=0; i<a.length;   i) {
            for(var j=i 1; j<a.length;   j) {
                if(a[i] === a[j])
                    a.splice(j--, 1);
            }
        }

        return a;
    }
});

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GamingAndTech

    GamingAndTec

    16 NİSAN 2013
  • george sarintzotis

    george sarin

    2 Aralık 2007
  • lilstevie89

    lilstevie89

    25 Mart 2011