当值为真时返回函数

时间:2018-07-30 07:12:41

标签: javascript

我有一种情况,当for循环内的语句为true时,我需要返回一个值。 按照下面的代码:当条件满足时,我将返回false,但在循环中满足条件时,我将不会获得任何值。

function isFeatureAllowed(data){
            _.each(user.restrictions.restrictedFeatures, function(restriction){
                if(restriction.name.indexOf(data.toLowerCase()) !== -1){
                    return false;
                }
            })
        }

console.log(isFeatureAllowed) should return true.
if(isFeatureAllowed){
   //do something
}

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

假设restrictedFeatures是一个数组,则可以使用.every函数:

const isAllowed = feature =>
  restrictedFeatures.every(r => !r.name.includes(feature.toLowerCase()))

答案 1 :(得分:0)

尝试这种方式:

function isFeatureAllowed(data){
            var value = true;
            _.each(user.restrictions.restrictedFeatures, function(restriction){
                if(restriction.name.indexOf(data.toLowerCase()) !== -1){
                    value = false;
                }
            })
            return value;
}

答案 2 :(得分:0)

在lodash中,如果您使用return false,则它将break循环,但不会将任何内容返回给调用函数。因此,要返回该值,可以使用一个临时变量,例如flag来存储该值,并在中断循环之前将其返回。

var user = {
  restrictions : {
    restrictedFeatures: [
      {
        name: ['somename']
      }
    ]
  }
}
function isFeatureAllowed(data){
  let flag = true;
   _.each(user.restrictions.restrictedFeatures, function(restriction){
      if(restriction.name.indexOf(data.toLowerCase()) !== -1){
          flag = false;
          return false;
      }
  })
  return flag;
}

console.log(isFeatureAllowed('SOMENAME'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>

答案 3 :(得分:-1)

您可以通过以下方式进行操作:

function isFeatureAllowed(data){
        _.each(user.restrictions.restrictedFeatures, function(restriction){
            if(restriction.name.indexOf(data.toLowerCase()) !== -1){
                return false;
            }
        })
        return true;
    }