javascript - 有没有一种更简单的方法可以使用 lodash 从多个对象集合构造唯一值数组?

标签 javascript lodash

我有一个包含两个项目数组的对象。这些项目的结构相同,并且每个项目都有一个“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/

相关文章:

javascript - 从另一个数组更新对象数组

javascript - 替换对象值 lodash

javascript - Lodash,Uncaught TypeError : _. remove is not a function

php - 什么被认为是 "best practice"用于设计一组服务 AJAX 请求的 PHP 脚本?

javascript - Firestore 突然出现巨大的触发延迟

javascript - AngularJS - 使用 lodash 更好地过滤集合中的集合

对象的 Javascript 点对象键

javascript - 如何使用 Breeze 查询常规可查询 WebApi 端点?

javascript - Ctrl+p vs window.print() 导致不同的页面设计

javascript - 为什么这种转变不起作用?