Javascript 频率计数器未定义/2的功率不相等
因此,问题在于两个阵列:Javascript 频率计数器未定义/2的功率不相等,javascript,Javascript,因此,问题在于两个阵列: [1,2,2,4]; [1,4,4,16]; 检查第一个数组中的项在第二个数组中是否有重复项 const counterNumber = (arr1,arr2) => { if(arr1.length !== arr2.length) return false let counter1 = {} let counter2 = {} for (let val of arr1){ counter1[val] = (
[1,2,2,4];
[1,4,4,16];
检查第一个数组中的项在第二个数组中是否有重复项
const counterNumber = (arr1,arr2) => {
if(arr1.length !== arr2.length) return false
let counter1 = {}
let counter2 = {}
for (let val of arr1){
counter1[val] = ( counter1[val] || 0 )+ 1
}
for (let val of arr2){
counter2[val] = ( counter2[val] || 0 )+ 1
}
for(let key in counter1){
if(!(key ** 2 in counter2)) return false
if(counter2[key ** 2] !== counter1[key]) return false
}
return true
}
现在这是工作,但我不明白这一行
if(counter2[key ** 2] !== counter1[key]) return false
这怎么不会是假的?第一个数组有1,2,2,4,第二个数组有1,4,4,16
对于第一个数组,将值存储在一个对象中后,该对象将具有键1、2、3。
在for-In循环中
counter2[key **2] is counter[1 ** 2] / counter[1] // counter1[1]
counter2[key ** 2] is counter[ 2 ** 2] / counter[4] // counter1[2]
counte2[key ** 3] is counter{ 3 ** 2] / counter[9] // counter1[3]
these are not === so therefore it should return false but instead if i console.log it gives me undefined and the return true appears.
在最后一个for循环之前 柜台1是 常数计数器1={ 1: 1, 2: 2, 4: 1 } 柜台2是 常数计数器2={ 1: 1, 4: 2, 16: 1 } 下面是一个基于arr1中的值描述不同变量的表 下一行检查两个数组中值的频率 ifcounter2[键**2]!==计数器1[键]返回false 如果您查看表格,它将比较第4行和第5行 代码可以像这样进行重构以变得更清晰 常量计数器编号=arr1,arr2=>{ ifarr1.length!==arr2.length返回false 设计数器1={} 设计数器2={} 对于arr1的let val{ 计数器1[val]=计数器1[val]| | 0+1 } 对于arr2的let val{ 计数器2[val]=计数器2[val]| | 0+1 } 计数器1中的forlet键{ 如果!hasMatchingSquareNumberkey,计数器2返回false 如果!hasMatchingSquareNumberCountkey、计数器1、计数器2返回false } 返回真值 } 常量hasMatchingSquareNumber=值,计数器2=>{ const valueToSquare=值**2; 返回值到计数器2中的方形; } const hasMatchingSquareNumberCount=值,计数器1,计数器2=>{ const valueToSquare=值**2; 返回计数器2[valueToSquare]==counter1[value]; }
您可以将代码片段化并添加它们不是的东西吗===因此它应该返回false,但是如果i console.log它给我undefined,则返回true。是什么意思?现在我意识到我把计数器2中的键和值搞混了谢谢!
+----+----------------+---+---+---+
| #1 | value in arr1 | 1 | 2 | 4 |
+----+----------------+---+---+---+
| #2 | counter1 key | 1 | 2 | 4 |
+----+----------------+---+---+---+
| #3 | counter2 key | 1 | 4 |16 |
+----+----------------+---+---+---+
| #4 | counter1 value | 1 | 2 | 1 |
+----+----------------+---+---+---+
| #5 | counter2 value | 1 | 2 | 1 |
+----+----------------+---+---+---+