检查多个变量的值变化
Checking multiple variables for value change
我有6个变量(我们称它们为var1, var2,…)它们都有预定义的初始值。在我的程序中,它们的值可能会被重新定义。(我可以选择覆盖这些值或将新值存储在单独的变量中)在特定函数的末尾,只有当任何值从其初始值更改时,我才需要做一些事情。
我试图避免为该任务编写长if语句,如:
if ((var1 != var1new) || (var2 != var2new)......)
{
//do something...
}
有什么好的办法吗?
将值存储在对象中并遍历该对象:
var values = { var1: { current: 0, initital: 0 }, var2: { current: 0, initial : 0 } };
for(var v in values)
{
if(v.current !== v.initial)
{
//Changed
}
}
您可以将它们存储在映射中:
var vars = {
original: {
var1: ...,
var2: ...,
...
},
updated: {
var1: ...,
var2: ...,
...
}
};
您最终会将更新的值写入vars.updated
(例如vars.updated.var1
)。
之后,您可以简单地循环来检测是否有任何更改。
var changed = false;
var keys = Object.keys(vars.original);
var i = 0;
while(!changed && i < keys.length) {
var key = keys[i];
changed = (vars.original[key] !== vars.updated[key]);
i++;
}
你也可以用更实用的方式使用reduce
:
var similar = Object.keys(vars.original).reduce(function(similar, key) {
return similar && (vars.original[key] === vars.updated[key]);
}, true);
这比循环更优雅。请注意,这将告诉您对象是否没有更改(上面的while
将告诉您它们是否已更改)。
相关文章:
- 重新加载页面时Javascript变量发生变化
- 如何检测和打印变化变量LESS
- 当变量发生变化时运行PHP
- 使用 jquery 检测变量变化
- 如果两个值都会动态变化,则用变量替换某个字符串的一部分 - Javascript
- 为什么 Angular 没有注意到这个变量的值发生了变化
- 如何防止变量在 JavaScript 中发生变化
- 为什么这个变量在函数之间传递时会发生变化
- 指令侦听控制器变量的变化
- JAVASCRIPT 变量在函数中没有变化
- 双向绑定不识别 AngularJS 中的变量变化
- 角度范围之外的变量的变化
- 设置路由时,角度范围变量会发生变化
- PHP 变量根据设备宽度而变化
- 原型取决于全局变量(如果该变量发生变化怎么办)
- 范围变量以角度更新,但变化不会反映给用户
- 在.then()单元测试中AngularJS$作用域变量的变化
- 全局变量不't随jquery函数变化
- 如何在函数中有一个动态变量,而不将其链接到变化的变量
- 函数外部的函数变化变量