SORU
28 Ocak 2011, Cuma


Temiz javascript diziden öğe kaldırmak için yol (jQuery ile)coffeescript

Bu konuda pek çok soru var, az değil: jQuery version of array contains, a solution with the splice method ve çok daha fazlası. Ancak, hepsi karmaşık ve can sıkıcı görünüyor.

Javascript, DV ve coffeescript Birleşik güçler ile, javascript bir diziden öğe kaldırmak için çok temiz yolu nedir? Önceden Endeksi bilmiyoruz. Kod:

a = [4,8,2,3]
a.remove(8)     # a is now [4,2,3]

Bir iyi yerleşik yöntem başarısız, javascript diziler böyle bir yöntem destek için uzanan temiz bir yolu nedir? Eğer yardımı olacaksa, gerçekten ayarlar gibi diziler kullanıyorum. Çözümleri ideal güzel bir WordPress kullanmak desteği ile coffeescript çalışacak. Ayrıca, daha az hız umrumda değil, ama bunun yerine net ve basit bir kod ön planda.

CEVAP
28 Ocak 2011, Cuma


CoffeeScript:

Array::remove = (e) -> @[t..t] = [] if (t = @indexOf(e)) > -1

Sadece pozisyon e bulunduğu t, Endeksi ise aslında t > -1 bulundu (varsa) eleman eklemeler. Coffeescript bu çevirir:

Array.prototype.remove = function(e) {
    var t, _ref;
    if ((t = this.indexOf(e)) > -1) {
        return ([].splice.apply(this, [t, t - t   1].concat(_ref = [])), _ref);
    }
};

Ve eğer eşleşen tüm öğeleri kaldırmak ve yeni bir dizi döndürür, CoffeeScript ve jQuery kullanarak isterseniz:

Array::remove = (v) -> $.grep @,(e)->e!=v

çeviren:

Array.prototype.remove = function(v) {
    return $.grep(this, function(e) {
        return e !== v;
    });
};

Veya jQuery olmadan aynı şeyi grep:

Array::filterOutValue = (v) -> x for x in @ when x!=v

çeviren:

Array.prototype.filterOutValue = function(v) {
    var x, _i, _len, _results;
    _results = [];
    for (_i = 0, _len = this.length; _i < _len; _i  ) {
        x = this[_i];
        if (x !== v) {
            _results.push(x);
        }
    }
    return _results;
};

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Blue Lightning TV

    Blue Lightni

    9 EKİM 2011
  • parlophone

    parlophone

    28 ŞUBAT 2006
  • Project Mooncircle

    Project Moon

    6 Aralık 2009