2012-12-20 44 views
31

thể trùng lặp:
Accessing properties of an array of objectsLàm cách nào để chuyển đổi mảng đối tượng javascript thành mảng chuỗi thuộc tính đối tượng mà tôi muốn?

Given:

[{ 
    'id':1, 
    'name':'john' 
},{ 
    'id':2, 
    'name':'jane' 
}........,{ 
    'id':2000, 
    'name':'zack' 
}] 

là gì cách tốt nhất để có được:

['john', 'jane', ...... 'zack'] 

Phải Tôi lặp qua và đẩy item.name đến một mảng khác, hoặc là có một chức năng đơn giản để làm điều đó?

+0

Bạn có chắc chắn bạn cần phải chuyển nó sang một mảng như thế? Thông thường, thực hiện một chuyển đổi như thế này là một dấu hiệu cho thấy bạn có thể đang đi về vấn đề cơ bản của bạn một cách sai lầm. Có thể hữu ích nếu bạn lùi lại một bước và đảm bảo không phải như vậy. – Shauna

+0

@shauna vấn đề của tôi là điều này. im bằng cách sử dụng kiểu gõ của bootstrap nó chỉ truy cập định dạng thứ hai: đó là một mảng của chuỗi. cuộc gọi ajax của tôi sẽ trả về định dạng đầu tiên cuz tôi cần ID. tôi có thể cuz đi và mở rộng typeahead của boostrap nhưng thay vì làm điều này: gửi định dạng thứ 2 để bootstrap. chỉ giữ định dạng đầu tiên xung quanh và khi người dùng chọn một lựa chọn, hãy kiểm tra đối tượng đầu tiên này và sử dụng id nếu cần. –

Trả lời

52

Nếu mảng của các đối tượng là items, bạn có thể làm:

var items = [{ 
 
    id: 1, 
 
    name: 'john' 
 
}, { 
 
    id: 2, 
 
    name: 'jane' 
 
}, { 
 
    id: 2000, 
 
    name: 'zack' 
 
}]; 
 

 
var names = items.map(function(item) { 
 
    return item['name']; 
 
}); 
 

 
console.log(names); 
 
console.log(items);

Tài liệu: map()

+0

câu hỏi không được gắn thẻ với jQuery – Bruno

+1

@ bru.scopelliti 'map()' là JavaScript gốc và không chỉ jQuery. – Sirko

+1

@ bru.scopelliti - câu trả lời của tôi không liên quan gì đến jQuery .. – techfoobar

2

Sử dụng map() chức năng có nguồn gốc trên mảng JavaScript:

var yourArray = [ { 
    'id':1, 
    'name':'john' 
},{ 
    'id':2, 
    'name':'jane' 
}........,{ 
    'id':2000, 
    'name':'zack' 
}]; 

var newArray = yourArray.map(function(el){ 
           return el.name; 
           }); 
0

Bạn có thể sử dụng chức năng này:

function createStringArray(arr, prop) { 
    var result = []; 
    for (var i = 0; i < arr.length; i += 1) { 
     result.push(arr[i][prop]); 
    } 
    return result; 
} 

Chỉ cần vượt qua các mảng của các đối tượng và thuộc tính mà bạn cần. Kịch bản ở trên sẽ hoạt động ngay cả khi triển khai ECMaScript cũ.

0

Bạn có thể làm điều này để chỉ theo dõi các đặc tính riêng của đối tượng:

var arr = []; 

for (var key in p) { 
    if (p.hasOwnProperty(key)) { 
     arr.push(p[key]); 
    } 
} 
Các vấn đề liên quan