检查多个变量的值变化

Checking multiple variables for value change

本文关键字:变化 变量 检查      更新时间:2023-09-26

我有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将告诉您它们是否已更改)。