【发布时间】:2021-07-03 18:54:29
【问题描述】:
我想创建一个脚本来比较来自两个不同来源的变量。 我需要将一些值 a1, a2, ..., an 与其他一些值 b1, b2, ..., bn 进行比较。我想知道a1 = b1,a2 = b2,...,an = bn。如果其中一些不相等,我想知道其中哪些不相等。这些变量是整数和字符串。所有对都有相同的可能性相等。
我也知道这些变量不相等的情况极为罕见。事实上,在 1000 对变量中,几乎 1 对变量可能是不相等的。每次我都会为近 20 个变量运行脚本数百次,因此大多数情况下所有对都是相等的。我想知道我是否可以以某种方式利用这个事实。
作为第一种方法,我想的是多个 if 语句。例如:
let equal = true;
let issues = [];
if (a1 !== b1){
equal = false;
issues.push("a1!=b1");
}
...
if (a20 !== b20){
equal = false;
issues.push("a20!=b20");
}
只要大多数时候不存在不等对,我就想将所有 a1,..,an 变量转换为单个变量 variableA 并将所有 b1,...,bn 转换为变量 @ 987654323@。比较两个变量,只有当它们不相等时,才进行上述过程。如果我的数据被清理(没有 null、未定义、“”等),那么做这样的事情是否有意义?我不确定这是否会减少时间,我认为这可能是一种不好的做法。
let variableA = a1 + a2 + ... + a20;
let variableB = b1 + b2 + ... + b20;
let equal = true;
let issues = [];
if (variableA !== variableB){
equal = false;
if (a1 !== b1){
issues.push("a1!=b1");
}
...
if (a20 !== b20){
issues.push("a20!=b20");
}
}
或者:
if (!((a1===b1) && (a2===b2) && ... && (a20===b20))){ ...
我还考虑将变量存储在数组或对象中并进行比较。我认为将它们存储在对象中可能会更好。我的脚本将用 javascript 编写,尽管我最感兴趣的是方法而不是语言。
不管它们可以以何种方式进行比较,有什么方法可以优化它,因为我知道几乎所有时候我的条件都是错误的?
【问题讨论】:
-
真的不会有独立于语言的答案。不同的语言和不同的编译器/解释器可能会以非常不同的方式处理看起来相似的代码。
标签: javascript performance if-statement optimization time-complexity