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

  • Howcast

    Howcast

    4 EKİM 2007
  • ipsy

    ipsy

    1 EKİM 2012
  • xiaoyu85

    xiaoyu85

    20 ŞUBAT 2010