为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript - 使用简化的单行 if 语句更新 var

Javascript - 使用简化的单行 if 语句更新 var

潇湘沐 2022-01-07 09:52:02
小问题,我在 JS 中有一个 var,只要当前值低于 99,我就想增加它,否则它应该重置为零。当前的简化代码var age = 35;age = ( age < 99) ? age+1 : 0;现在,这是合理的人类可读的。但是,如果我的 var 是obj[layer01][gridY][gridX][shape] 那会改变我的行,比如:obj[layer01][gridY][gridX][shape] = ( obj[layer01][gridY][gridX][shape] < 99) ? obj[layer01][gridY][gridX][shape]+1 : 0;问题有没有办法简化这个?就像是:age = (< 99) ? ++ : 0;
查看完整描述

3 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

最简单的方法是创建一个函数:


var obj = {

  a: {

    b: 1

  }

};


function increment(value, max) {

  // this do the same as your ternary operator

  return (value + 1) % max;

}


obj['a']['b'] = increment(obj['a']['b'], 100);


console.log(obj['a']['b']);


// THIS DOES NOT WORK (won't update obj):

var x = obj['a']['b'];

x = increment(x, 100);

console.log(obj['a']['b'], x);


查看完整回答
反对 回复 2022-01-07
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

( % )像这样使用模运算符 -


var age = 95;

var limit = 100;


function incrementValue()

{

    age = (age+1) % limit;

    document.getElementById('number').value = age;

}


document.getElementById('number').value = age;

<form>

   <input type="number" id="number"/>

   <input type="button" onclick="incrementValue()" value="Increment Value" />

</form>


查看完整回答
反对 回复 2022-01-07
?
慕娘9325324

TA贡献1783条经验 获得超5个赞

将temp变量存储到变量中,然后执行操作:


试试这个:


let age = obj[layer01][gridY][gridX][shape];

obj[layer01][gridY][gridX][shape] = ( age < 99) ? (age + 1) : 0;


查看完整回答
反对 回复 2022-01-07
  • 3 回答
  • 0 关注
  • 230 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号