【问题标题】:lodash filter and exclude valuelodash 过滤和排除值
【发布时间】:2017-01-28 12:27:41
【问题描述】:

我正在使用 lodash _.filter 函数。过滤时,如果元素与其连续元素相同,我想删除它。在这段代码中,显示

这是场景,

fObj=[1,2,3]
 template=[{"v":1,"d":"ABC","disabled":true},{"v":2,"d":"xyz","disabled":true},{"v":3,"d":"PQR","disabled":false},{"v":4,"d":"lmn","disabled":true}]
arr = _.filter( template, function ( item )
{
    return item.disabled === true || fObj.indexOf( item.vm ) !== -1;
});

这是一种父子,假设 ABC,XYZ 是父子。没有孩子的父母必须被移除。 由于 XYZ 有一个子 PQR,我应该同时显示两者。父母和孩子之间没有任何关系。 我们必须假设,当两个连续的元素禁用=true 时,我想同时删除它们。

应该删除没有孩子的2个父母(abc和lmn)

【问题讨论】:

    标签: lodash


    【解决方案1】:

    我给你做了个例子

    var arr = _.filter( template, function ( item, index )
    {
        if(item.needToBeRemoved) {
             return false;
        } else {
            var isNotTheLastElement = index < (template.length - 1);
            if(isNotTheLastElement) {
                var nextItem = template[index+1];
                if(item.disabled && nextItem.disabled) {
                    nextItem.needToBeRemoved = true;
                    return false
                }
            }
        }
        return true;
    });
    

    这里是jsFiddle

    【讨论】:

    • 你希望我使用 _.reject 而不是 _.filter
    • 您可以使用过滤器实现相同的目的。我只是使用了拒绝,因为它对我来说更有意义。我会很好,并用过滤器更新示例给你:)
    • 现在你有同样的东西,但使用了过滤器。
    • ya 过滤器是不错的选择,因为函数中的其他逻辑依赖于过滤器
    • 我想没有按预期工作,但我不确定,如果最后一个元素被禁用,这将如何工作。
    猜你喜欢
    • 1970-01-01
    • 2020-08-24
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 2021-03-31
    • 2021-07-14
    • 2016-03-07
    相关资源
    最近更新 更多