我有一个包含两个项目数组的对象。这些项目的结构相同,并且每个项目都有一个“tech”属性,该属性是一个字符串数组。我想打印所有对象中出现的所有可能的唯一字符串的数组。我在下面包含的解决方案有效,但我想知道是否有更简洁的方法来使用 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"]
最佳答案
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"] }] },
tech = [];
_.each(data , function(collection){
tech.push(_.map(collection,'tech'));
});
console.log(_.uniq(_.flattenDeep(tech)));
关于javascript - 有没有一种更简单的方法可以使用 lodash 从多个对象集合构造唯一值数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39839543/