Tôi có một mảng nặng như thế này:Nhóm của mảng và thêm lĩnh vực và mảng phụ trong mảng chính
[
{Id: 1, Name: 'Red', optionName: 'Color'},
{Id: 2, Name: 'Yellow', optionName: 'Color'},
{Id: 3, Name: 'Blue', optionName: 'Color'},
{Id: 4, Name: 'Green', optionName: 'Color'},
{Id: 7, Name: 'Black', optionName: 'Color'},
{Id: 8, Name: 'S', optionName: 'Size'},
{Id: 11, Name: 'M', optionName: 'Size'},
{Id: 12, Name: 'L', optionName: 'Size'},
{Id: 13, Name: 'XL', optionName: 'Size'},
{Id: 14, Name: 'XXL', optionName: 'Size'}
]
Những gì tôi cần làm là để nhóm chúng bởi optionName
và có hai hàng trong mảng chính như này:
[
{
Name: 'Color',
Data:[{Id: 1, Name: 'Red'},
{Id: 2, Name: 'Yellow'},
{Id: 3, Name: 'Blue'},
{Id: 4, Name: 'Green'},
{Id: 7, Name: 'Black'}]
}, {
Name: 'Size',
Data:[{Id: 8, Name: 'S'},
{Id: 11, Name: 'M'},
{Id: 12, Name: 'L'},
{Id: 13, Name: 'XL'},
{Id: 14, Name: 'XXL'}]
}
]
Làm cách nào để thực hiện nó trong javascript?
Tốt tóm tắt Rogier, chỉ là một sự điều chỉnh khó khăn: bạn đề cập đến những giải pháp có sẵn trong ES6 +, nhưng nguyên mẫu mảng fil ter, bản đồ và giảm có sẵn từ ES5.1 (2011) và được hỗ trợ bởi IE9 +, FF3 + và tất cả các phiên bản chrome. –
@AhmetCetin Tôi không hoàn toàn chắc chắn nếu tôi hiểu ý bạn là gì, trong ví dụ của tôi, tôi cung cấp cú pháp ES5 (.1) aswel giống như hàm được viết trong ES6 +. Có lẽ tôi cần phải làm rõ các hàm đầu tiên là ES5 (.1)? –
bạn nói đúng, tôi đã bỏ lỡ điều đó, bạn đã sử dụng ký hiệu mũi tên chất béo trong ES6. Nên hiểu rõ hơn nếu bạn đề cập đến cú pháp khác là hợp lệ cho ES5.1. Khi tôi đọc lần đầu tiên, tôi nghĩ bạn có nghĩa là tất cả các giải pháp hợp lệ cho ES6. –