Nếu tôi có một chuỗi các chuỗi, tôi có thể sử dụng .join()
phương thức để có được một chuỗi, với mỗi phần tử được phân tách bằng dấu phẩy, như vậy:
["Joe", "Kevin", "Peter"].join(", ") // => "Joe, Kevin, Peter"
Tôi có một mảng các đối tượng và tôi muốn thực hiện một thao tác tương tự trên một giá trị được giữ trong đó; từ đó
[
{name: "Joe", age: 22},
{name: "Kevin", age: 24},
{name: "Peter", age: 21}
]
thực hiện join
phương thức chỉ trên name
thuộc tính, để đạt được đầu ra như trước.
Hiện tại tôi có chức năng sau:
function joinObj(a, attr){
var out = [];
for (var i = 0; i < a.length; i++){
out.push(a[i][attr]);
}
return out.join(", ");
}
Không có gì sai với mã đó, nó hoạt động, nhưng thật bất ngờ tôi đã đi từ một dòng mã đơn giản, cô đọng sang một chức năng rất bắt buộc. Có một cách ngắn gọn hơn, lý tưởng hơn chức năng viết này?
users.map(x => x.name).join(', ');
.
" ,".join([i.name for i in a])