Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 简化项目替换链的逻辑_Javascript_Java_Ruby_Simplification - Fatal编程技术网

Javascript 简化项目替换链的逻辑

Javascript 简化项目替换链的逻辑,javascript,java,ruby,simplification,Javascript,Java,Ruby,Simplification,我有一些物品正在被其他物品替换,因此创建了一个替换链,如下所示: +---------------+------------------+ | Replaced Item | Replacement Item | +---------------+------------------+ | A | B | | B | C | | C | D

我有一些物品正在被其他物品替换,因此创建了一个替换链,如下所示:

+---------------+------------------+ | Replaced Item | Replacement Item | +---------------+------------------+ | A | B | | B | C | | C | D | | G | H | +---------------+------------------+ 我从ref.hashCode()方法中获得了hashCode

//A = 65
//B = 66
//C = 67
//D = 68
//E = 71
//F = 72
//----

// Now A --> B means
ref2 = ref1;
//A = 65
//B = 65
//C = 67
//D = 68
//E = 71
//F = 72
//----

// Now B --> C means
ref3 = ref2;
//A = 65
//B = 65
//C = 65
//D = 68
//E = 71
//F = 72
//----


// Now C --> D means
ref4 = ref3;
//A = 65
//B = 65
//C = 65
//D = 65
//E = 71
//F = 72
//----

// Now C --> D means
ref6 = ref5;
//A = 65
//B = 65
//C = 65
//D = 65
//E = 71
//F = 71
//----
现在我需要遍历所有引用,并将hashcode放入一个包含唯一值的集中。所以我只有65分和71分

现在,, 65->A、B、C、D和优先级D是最后一个元素。 71->G,H优先顺序H是最后一个元素

因此,我可以总结如下:

+---------------+------------------+ | Replaced Item | Replacement Item | +---------------+------------------+ | A | D | | B | D | | C | D | | G | H | +---------------+------------------+ +---------------+------------------+ |替换项|替换项| +---------------+------------------+ |A | D| |B|D| |C|D| |G | H| +---------------+------------------+ 您可以通过一些简单的递归获得一个新的“映射”:

var替换={
A:‘B’,
B:‘C’,
C:‘D’,
G:‘H’
},
map={};
功能替换(字母){
if(!replacements[letter])//如果替换内容不包含当前字母,
返回字母;//只使用当前字母
return replace(replacements[字母]);//否则,获取替换字母。
}
对于(替换中的var key){/'key'为:A、B、C、G
map[key]=replace(key);//在映射中指定一个新的替换值。
}

控制台日志(map)Erm。。。为什么不简单地将每个链构建为一个列表,然后使用第一个和最后一个元素作为新表?(使用循环检查…)那么,Apoorv,我的答案是否回答了你的问题?@Florian Schaetz:因为它不一定只是下一个和上一个之间的链接。。向前看,H也可以用C代替。因此它无法创建链接列表。这是一棵树。谢谢你的回答。我试图在java中将其实现为不相交的集合数据结构。这看起来容易得多。只有当替换项是相同的变量(如“A->A”)时,它才会失败,但我们可以事先删除这些元素,因为这些替换没有意义。
//A = 65
//B = 66
//C = 67
//D = 68
//E = 71
//F = 72
//----

// Now A --> B means
ref2 = ref1;
//A = 65
//B = 65
//C = 67
//D = 68
//E = 71
//F = 72
//----

// Now B --> C means
ref3 = ref2;
//A = 65
//B = 65
//C = 65
//D = 68
//E = 71
//F = 72
//----


// Now C --> D means
ref4 = ref3;
//A = 65
//B = 65
//C = 65
//D = 65
//E = 71
//F = 72
//----

// Now C --> D means
ref6 = ref5;
//A = 65
//B = 65
//C = 65
//D = 65
//E = 71
//F = 71
//----
+---------------+------------------+ | Replaced Item | Replacement Item | +---------------+------------------+ | A | D | | B | D | | C | D | | G | H | +---------------+------------------+