javascript - 如何在angularjs中使用_.map使用三元运算符

标签 javascript lodash

我需要根据某些条件返回 true 或 false,我没有得到更清晰的代码来执行此操作:

我需要根据此条件隐藏或显示 UI 上的某些元素,这些元素应返回 true 或 false:

scope.isDataEnabled =function(options){ //Here if supppose a comes,
                           // then i need to send true, otherwise false
    if(!$rootScope.currentProduct.id ==
        ProductConstants.BB_PRODUCT_ID){
            return true;
        }
   else{
       _.map( $rootScope.currentUser.permissions, permissionObj =>{
           // permissions is an Array
           return (permissionObj.module == "DATA" &&
              permissionObj.values == "b" && options=="a") //need to send true 
                                           //if this condition satisfies
       });
    }
    return false; //after returning true,
                  //it comes to this line and sets to false
}

请帮助我指导我应该使用什么来实现它。我正在考虑使用三元运算符,但不知道如何在 map 中使用它。

最佳答案

将代码简化为可操作的最小测试场景(并且仅使用普通的旧 ES20xx)可能会有所帮助。像这样的东西:

let $rootScope = {
  currentProduct: {
    id: `x`
  },
  currentUser: {
    permissions: [{
      module: `BB_DATASET`,
      values: `b`
    }, {
      module: `some`,
      values: `a`
    }]
  }
};
const ProductConstants = {
  BB_PRODUCT_ID: `y`
}

console.log(testMe(`a`)); // true (currentProduct.id not BB_PRODUCT_ID)

ProductConstants.BB_PRODUCT_ID = `x`;
console.log(testMe(`a`)); // true (module && values && options)

$rootScope.currentUser.permissions[0].module = `AA_DATASET`;
console.log(testMe(`a`)); // false (module not BB_DATASET)

$rootScope.currentUser.permissions[0].module = `BB_DATASET`;
console.log(testMe(`b`)); // false (options not `a`)

$rootScope.currentUser.permissions[0].values = `c`;
console.log(testMe(`a`)); // false (values not `b`)

function testMe(options) {
  if ($rootScope.currentProduct.id !== ProductConstants.BB_PRODUCT_ID) {
    return true;
  }
  const found = $rootScope.currentUser.permissions.find( v =>
    v.module === `BB_DATASET` &&
    v.values === `b` &&
    options == `a`);
  return found ? true : false;

}
.as-console-wrapper {
  top: 0;
  max-height: 100% !important;
}

关于javascript - 如何在angularjs中使用_.map使用三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60816448/

相关文章:

javascript - 使用 REST 发送 ajax 请求可以,但不能使用 jQuery

javascript - Node.js Readable self.push() 在工作 15 次迭代后停止

javascript - 隐藏密码文本框并提交

javascript - 如何为未定义的值过滤对象数组?

javascript - Lodash 从 3 到 4 发生了什么变化导致这段代码不起作用?

javascript - Lodash 合并包括未定义的值

javascript - 由于未知原因,控制台无法识别 clientX

javascript - 无法将 JSON 对象转换为任何可用的对象

javascript - 使用动态变量分配对象

lodash - 使用Lodash展平嵌套的对象数组