javascript - 无法使用 lodash 更改对象键值

标签 javascript angularjs object ecmascript-6 lodash

var flagsObj = {
  logical1Flag: false,
  operator1Flag: false,
  resourceLeftFlag: false,
  resource1Flag: false,
  resourceRightFlag: false,
};

在上面的对象中,我想更改其中任何一个的值并将其设为真,其余的我想设为假。我已经使用了下面提到的这个函数,但是我能够更改使用映射值或 foreach 函数的值,但原始 flagsobj 没有得到更改。

function settingFlag(val, keyF) { 
   const trueVal = val;
   const falseVal = false;
   const assignedKey = keyF;

_.mapValues(this.flagsObj, (value, key) => {
  if (key === assignedKey) {
    value = true;
  } else {
    value = false;
  }
  // console.log(value);
  console.log(`
    Flags
    ====
    key ${key} value ${value}
  `);
});

或者使用forEach来操作数据

_.forEach(this.flagsObj, (value, key) => {
  if (key === assignedKey) {
    value = true;
    console.log(`
    flags
    =====
    key ${key} value ${value}
    `);
  } else {
    value = false;
  }
});
console.log('::::: FLAGS :::: ', flagsObj);
}

foreach 或 map 值都在更改所需值,但原始 flagsObj 未更改。

任何可以解决问题的 lodash 函数都值得赞赏。我正在使用 angular 1.5 es6 应用程序

最佳答案

不确定 lodash,但是纯 js 中的一个衬里就可以了

var flagsObj = {
  logical1Flag: false,
  operator1Flag: false,
  resourceLeftFlag: false,
  resource1Flag: false,
  resourceRightFlag: false,
};

function change(obj, key) {
  return Object.keys(obj).forEach(v => obj[v] = v === key);
}

change(flagsObj, "logical1Flag");

console.log(flagsObj);

关于javascript - 无法使用 lodash 更改对象键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45089251/

相关文章:

javascript - 第二次单击时如何不在单击事件中执行函数?

javascript - source, destination, distance - 计算距离最长的源和目的地

javascript - grunt-ng-constant 目标不能持续工作

javascript - Angular ng-show 指令不适用于按钮

c# - 在不使用 == 的情况下检查对象是否为 null

javascript - 为什么 KineticJS 文档中没有方法 draw()?

javascript - Div 内容不显示

javascript - JavaScript Controller 中的 Angular JS 过滤

javascript - 访问对象内的对象属性

VBA:用值初始化对象?