2013-08-25 21 views
12

özelliğini kullanarak nesnelerin birleşim kümesine 'değer' ve 'etiket' gibi birkaç özelliğin bulunduğu bir nesne dizim var. Tabii ki, "[object] [object]" 'ı verir, fakat bir nesneyle ayrılmış, tüm nesnelerin' value 'özelliklerinin bir dizisini almam gerekir., bir özellik

Bunu yapmanın en kısa yolu nedir ve bu bir döngü yazmadan mümkün mü?

jQuery.map() kullanarak deneyin
+1

Nesneleriniz birbirine benziyor mu? Başka bir deyişle, tek bir kurucu işlevden yapılabilir mi? Öyleyse, bir dizeye dönüştürüldüğünde nasıl görünmesi gerektiğini tanımlamak için 'Constructor.prototype' nesnesine' .toString() 'yöntemini ekleyebilirsiniz. Sonra sadece array.join ("") ' –

+0

... [burada bir demo] yapabilirsiniz (http://jsfiddle.net/2fYvN/). Bu, diziyi, birleştirilecek yeni değerlerle el ile eşleştirmek zorunda olmaktan daha hoş olurdu. –

cevap

24

- Array.map()JSON.stringify() için çünkü IE < 9 desteği

ait kullanılmaz - Eski bir tarayıcı desteği için

$.map(array, function(obj){return JSON.stringify(obj)}).join(' ') 

Güncelleme json2 kullanın: değer özelliklerini almak için

var string = $.map(array, function(obj){ 
    return obj.value 
}).join(' '); 

Demo: Fiddle

+0

Görünüşe göre 'return' ifadesi eksik. – undefined

+0

@undefined teşekkürler :), düzeltildi ... –

+1

Kötü şekilde açıklanmış gibi görünüyor. Sorularımı düzenledim, ihtiyacım olan şey dizideki nesnelerin tüm 'değer' özelliklerinin boşlukla ayrılmış bir dizisidir. –

3

Kullanım Array.map:

let data = [ 
    { 
    "animal": "cat", 
    "name": "Fluffy" 
    }, 
    { 
    "animal": "dog", 
    "name": "Bowser" 
    }, 
    { 
    "animal": "cat", 
    "name": "Felix" 
    } 
] 

Şimdi .map kullanarak isimleri ayıklamak:

let names = data.map(item => item.name) 


let nameString = names.join(' ') 

Ve şimdi nameStringFluffy Bowser Felix içerir.

İlgili konular