У меня есть объект, который содержит два массива элементов. Эти элементы структурированы одинаково, и каждый из них имеет «технический» атрибут, который представляет собой массив строк. Я хочу напечатать массив всех возможных уникальных строк, которые отображаются во всех объектах. Решение, которое я включил ниже, работает, но мне интересно, есть ли более лаконичный способ выполнить эту задачу с помощью lodash?Есть ли более простой способ построить массив уникальных значений из нескольких коллекций объектов с lodash?
var data = {
"sitesA" : [
{
"name": "Website Alpha",
"tech": ["SASS", "Foundation", "jQuery"]
},
{
"name":"Website Beta",
"tech":["SASS","AngularJS"]
},
{
"name":"Website Charlie",
"tech":["CSS","WordPress"]
}
],
"sitesB" : [
{
"name":"OtherSite",
"tech":["CSS","jQuery"]
},
{
"name":"Bears",
"tech":["SASS","AngularJS"]
},
{
"name":"Taco Time",
"tech":["CSS", "ASP", "SQL"]
}
]
}
var tech = [];
_.each(data,function(collection){
_.each(collection,function(item){
_.each(item.tech, function(value){
tech.push(value);
});
});
});
console.log(_.uniq(tech));
//^returns desired result of: ["SASS", "Foundation", "jQuery", "AngularJS", "CSS", "WordPress", "ASP", "SQL"]
Для справки: посмотрите, как использовать ES6 'new Set ([])' для получения уникальных значений: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set – colecmc