2013-02-09 15 views
6

PrototypeJS kitaplığı, bir nesnede bir değerler dizisi döndüren Object.values ​​() yöntemine sahiptir.jQuery içinde Object.values ​​()

EG:

var myObj = { 
    "key1" : "val1" 
    "key2" : "val2" 
} 
Object.values(myObj) //returns ["val1", "val2"] 

aynı şeyi yapan jQuery yöntem var mıdır?

+0

Hayır, yok. Yine de yaratmak kolay. –

cevap

10

ben bunu doğrudan yapan bir yöntem var olduğunu sanmıyorum, ancak $.map() kullanabilirsiniz: o geri arama öğesi olmayacaktır verilen bir özellik için null veya undefined dönerse olsa

$.map(myObj, function(val, key) { return val; }); //returns ["val1", "val2"] 

(Not Yeni dizide, yani nesneniz bu değerlerle özelliklere sahip olabilirse, başka bir şekilde yapmanız gerekir. for..in döngü ile sıfırdan kodlamak oldukça kolaydır.)

+0

Olmalı ... işlev (anahtar, val) ... 'yerine' ... işlev (val, anahtar) ... ' –

+2

@AndreiStalbe - Hayır yapmamalı. [Doco] 'yu kontrol edin (http://api.jquery.com/jQuery.map/). – nnnnnn

3

prototypejs 'values yöntemi genişliyor JavaScript'in yerleşik Object nesnesi. hiçbir şey aynı şeyi yapmanızı engelleyen vardır:

Object.values = function(object) { 
    var values = []; 
    for(var property in object) { 
    values.push(object[property]); 
    } 
    return values; 
} 


var foo = {a:1, b:2, c:3}; 
console.log(Object.values(foo)); 
// [1, 2, 3] 

Alternatif olarak, daha doğrusu Object kurcalamak istememeniz durumunda jQuery nesnesine yukarıda açıklanan yöntemi ekleyebilirsiniz:

$.values = function() { ... } 
+1

harika! bu harika! çok teşekkür ederim! Projenize tamamen yeni bir kütüphane eklemeniz gerekmediğinden mükemmeldir. – sksallaj

0

Underscorejs_.values sahiptir yöntemi: _.values({one : 1, two : 2, three : 3}); => [1, 2, 3]

Bu kitaplık JQuery'yi çok iyi bir şekilde geliştirir ve prototipler içinde harika bir şekilde çalışır.

1

ES6 kullanarak, aşağıdakileri yapabilirsiniz:

Object.values = x => 
     Object.keys(x).reduce((y, z) => 
      y.push(x[z]) && y, []); 

Bu sadece nesnenin değerlerini içeren bir dizi döndürür. JQuery'ye, ya da başka bir şeye gerek yok.


Not:Object.values()

  • kargaşa ayarlı-es2017
  • kargaşa-eklentisi-transform-zamanı
yükleme babel kullanarak ES7

için halen taslak halinde olan

, 012 desteği verirve diğer ES2017 işlevleri.

modüllerle önerisi gereğince, aşağıdaki .babelrc dosyayı yapılandırın:

{ 
    "plugins": ["transform-runtime"], 
    "presets": ["es2017"] 
} 
İlgili konular