Я пытаюсь использовать Lodash для получения уникальных значений из массива объектов, а затем использовать эти значения в качестве ключей для сортировки массива объектов.Мне удалось найти решение, однако я не уверен, что это самый сложный, читаемый или эффективный способ сделать это.
Используя _.uniq
и _.map
, я смог получить уникальные значения country
от каждого artist
.Затем я просмотрел эти значения и отфильтровал по ним artists
.
let artists = [
{ name: "Bob Jones", country: "Australia"},
{ name: "Jane Smith", country: "Australia"},
{ name: "James Good", country: "USA"},
{ name: "Jeremy Bond", country: "Japan"},
]
let countries = _.uniq(_.map(artists, 'country'))
// ["Australia", "USA", "Japan"]
let res = []
for (let i = 0; i < countries.length; i++) {
let country = countries[i]
let obj = {
country: country,
artists: artists.filter(artist => artist.country === country)
}
res.push(obj)
}
console.log(res)
/* [
{ country: "Australia",
artists: [
{ name: "Bob Jones", country: "Australia"},
{ name: "Jane Smith", country: "Australia"}
]
},
{ country: "USA",
artists: [
{ name: "James Good", country: "USA"}
]
},
{ country: "Japan",
artists: [
{ name: "Jeremy Bond", country: "Japan"}
]
}
]
*/
Есть ли какая-либо функция Lodash, которую я могу использовать вместо назначения цикла и объекта?