我有一种情况,当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
}
任何帮助将不胜感激。
答案 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;
}