首先,中间循环体是循环判断变量的类型,通过typeOf函数,返回值是字符串然后赋值给变量t1,t2.
可这个
if(map1[t1]) map1[t1]++; else map1[t1] = 1; if(map2[t2]) map2[t2]++; else map2[t2] = 1;
什么意思,map是数据结构中的键值对么?那这个赋值 没有太懂.
还有就是这个 最后的比较了
if(map1[TYPES[i]]!== map2[TYPES[i]]) return false;
对对象不了解没关系,下周一更新的第四章《对象》章节建议仔细学习哦,在这之前快把二、三章搞清楚吧~~~
map1就是对象呀,t1是对象的key,程序里作为类型的标识。
而值是该类型的出现次数。
由于题目要求判断时忽略顺序,所以用map记录每种类型的出现次数一致即可。例如:
map1的最后结果: {'number' : 1, 'string' : 5, 'null' : 3};
map2的最后结果: {'number' : 1, 'null' : 3, 'string' : 5};
如此来,两组数据number都出现1,次,string都是5次,null都是3次,这样就符合题目中要求的“同构”啦
反之,若遍历这些数据类型发现任何一个出现次数不同,就是异构。(最后的比较)