Javascript Angular 1.4.8/lodash使用条件参数解析对象数组

Javascript Angular 1.4.8/lodash使用条件参数解析对象数组,javascript,angularjs,lodash,Javascript,Angularjs,Lodash,开发工具 角度1.4.8,洛达斯4.0 最终解决方案 基于Derek在下面的代码贡献,我得出以下结论。必须调整为u0.property或与0.find链接的0.map在分析未定义时生成异常: var getProfileImage = function(images) { var defaultPath = 'images/profile/darthvader.jpg'; if(!images || !ima

开发工具

角度1.4.8,洛达斯4.0 最终解决方案

基于Derek在下面的代码贡献,我得出以下结论。必须调整为u0.property或与0.find链接的0.map在分析未定义时生成异常:

            var getProfileImage = function(images) {
                var defaultPath = 'images/profile/darthvader.jpg';
                if(!images || !images.length) return defaultPath;

                if (images) {
                    thumbnail = _.find(images, {type: 10});
                    return  thumbnail ? _.has(thumbnail, 'data_url') ? thumbnail.data_url : defaultPath: defaultPath;
                }
            },
客观的

我确信这是一个noob问题,因为我是JS的新手,如果显而易见,我会提前道歉。下面是一个解析图像以查找配置文件图像的方法。如果图像存在,则提取“数据url”属性。如果映像或映像类型可能不存在,请替换为通用路径。注意:此方法有效,但似乎冗长

问题:

使用上述工具是否有更简洁的方法实现相同的结果

sidenote我尝试将lodash链方法与uz.pulk一起使用,但我一直得到一个类型错误,我怀疑如果find或filter返回未定义的

TypeError:chain…\ Pull不是一个函数

上述方法:

简化的数据示例:

$images = [
 {id: 1,
 type: 10,
 data_url: base64string
 },
 {id: 2,
 type: 11, // note: not equal
 data_url: base64string
 }
];
方法是从指令模板调用的,代码如下。为简洁起见,删除了指令代码:

    "<img class='thumbnail__image' ng-src='{[{conversation.getImage(comment.profile.images)}]}'/>,
_.Pulk肯定会使您的代码更简洁,但它已从lodash 4.0.0中删除:

您现在可以使用u.map代替u.pulk。

\uu.pulk肯定会使代码更简洁,但它已从lodash 4.0.0中删除:


你现在可以用u.map来代替u.pulk。

这个问题更适合你

但下面是一个如何清理代码的示例:

var getProfileImage = function(images) {
    var defaultPath = 'images/profile/generic-thumbnail.png';

    if(!images || !images.length) return defaultPath;

    var thumbnailPath = _(images)
        .find({ type: 10 })
        .map('data_url')
        .value();

    return thumbnailPath ? thumbnailPath : defaultPath;
};

这个问题会更适合你

但下面是一个如何清理代码的示例:

var getProfileImage = function(images) {
    var defaultPath = 'images/profile/generic-thumbnail.png';

    if(!images || !images.length) return defaultPath;

    var thumbnailPath = _(images)
        .find({ type: 10 })
        .map('data_url')
        .value();

    return thumbnailPath ? thumbnailPath : defaultPath;
};

这将有助于了解在何处以及如何使用它,以及基本数据结构是什么。这将有助于了解在何处以及如何使用它,以及基本数据结构是什么