2013-08-25 42 views
12

Tôi có một mảng đối tượng với một vài thuộc tính, chẳng hạn như 'giá trị' và 'nhãn'.tham gia mảng đối tượng bằng cách sử dụng một thuộc tính

array.join(' ') tất nhiên cung cấp cho tôi "[đối tượng] [đối tượng]", nhưng thay vào đó, tôi cần phải nhận một chuỗi các thuộc tính 'giá trị' của tất cả các đối tượng, cách nhau bằng dấu cách.

Cách ngắn nhất để thực hiện việc này là gì và điều này có thể thực hiện mà không cần viết vòng lặp for?

+1

Đối tượng của bạn có giống nhau không? Nói cách khác, chúng có thể được tạo ra từ một hàm dựng đơn không? Nếu vậy, bạn có thể thêm phương thức '.toString()' vào đối tượng 'Constructor.prototype' để định nghĩa nó sẽ trông như thế nào khi được chuyển đổi thành chuỗi. Sau đó, bạn chỉ có thể thực hiện 'mảng.join (" ")' –

+0

... [đây là bản trình diễn] (http://jsfiddle.net/2fYvN/). Điều này sẽ đẹp hơn việc phải tự ánh xạ mảng tới các giá trị mới để tham gia. –

Trả lời

24

Hãy thử sử dụng jQuery.map()-Array.map() không được sử dụng vì IE < 9 hỗ trợ

Đối JSON.stringify() - sử dụng json2 hỗ trợ trình duyệt cũ

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

Cập nhật: Để có được tính giá trị

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

Bản trình diễn: Fiddle

+0

Có vẻ như bạn đang thiếu câu trả lời 'return'. – undefined

+0

@undefined thanks :), sửa chữa ... –

+1

Dường như tôi đã giải thích rất rõ. Tôi đã chỉnh sửa câu hỏi của mình, vì những gì tôi cần là một chuỗi cách nhau của tất cả các thuộc tính 'giá trị' của các đối tượng trong mảng. –

3

Sử dụng Array.map:

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

Bây giờ trích xuất các tên sử dụng .map:

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


let nameString = names.join(' ') 

Và bây giờ nameString chứa Fluffy Bowser Felix.

Các vấn đề liên quan