Javascript 这个算法的官方名称是什么?
我有两个HTML元素,都带有Javascript 这个算法的官方名称是什么?,javascript,algorithm,Javascript,Algorithm,我有两个HTML元素,都带有数据final figure属性。元素上的最终图形中的任何一个都可以赋值或留空,但不能相互冲突。现在我正在使用一种非常低效的方法: 1) 检查第一个是否为null,如果不是null,则将其放入变量中; 2) 然后检查第二个是否为null,如果不是,第一个是否为null,然后将其复制回第一个数据最终图attr;如果它不是null并且第一个元素也不是null,那么检查它们是否被分配了相同的值,如果不是,那么它们是冲突的,在这里我们抛出一个错误,因为两个元素都被指定了不同的
数据final figure
属性。元素上的最终图形
中的任何一个都可以赋值或留空,但不能相互冲突。现在我正在使用一种非常低效的方法:
1) 检查第一个是否为null
,如果不是null
,则将其放入变量中;
2) 然后检查第二个是否为null
,如果不是,第一个是否为null
,然后将其复制回第一个数据最终图
attr;如果它不是null
并且第一个元素也不是null
,那么检查它们是否被分配了相同的值,如果不是,那么它们是冲突的,在这里我们抛出一个错误,因为两个元素都被指定了不同的值。如果第二个值为null
,而第一个值不是,则将第一个值复制到第二个值
我模模糊糊地记得其中一本教科书中的这个算法,但我记不清它的名字了。我肯定不是河内塔。有没有更好的实施方法?谢谢。您的算法可以简化。以下是伪代码:
var1 = elem1.attribute
var2 = elem2.attribute
if (var1 && var2 && var1 != var2) {
report conflict
} else if (!var1 || !var2) { // one is null
value = var1 || var2; // Get the non-null value
var1.attribute = var2.attribute = value // Assign it to both
}
我不明白你在干什么。为什么不
如果(val1&&val2&&val1==val2){report error}
当其中一个值为空时,为什么要将值从一个复制到另一个?这不会引起冲突吗?哦,我误解了。冲突是指当它们不同时,我认为它们是相同的。我不认为这是一种常见的编程模式,我认为它不足以有一个名称。请注意,属性值是字符串;当属性存在时,它不能有null
值。如果没有,它将是未定义的
。如果“empty”,它的值就是空字符串。谢谢Barmar,如果我们有10个元素要比较,而不是2个呢?这个算法是如何从2扩展到10的?使用一个循环来测试所有的值是相同的还是空的,并将第一个非空值放入一个变量中。然后另一个循环可以将变量分配给所有空条目。另外,我有点难以理解您的,否则如果是部分,为什么需要检查!var1 | | |!var2
?我认为,一旦代码执行到这一点,不管发生什么,它都应该继续同步该值。如果
,是否真的有合理的理由来解释这个问题?如果条件为false,它们都已设置为相同的值,因此无需再次设置。顺便说一下,我认为这个比较值得一提,将其命名为Barmar sync method
?