javascript - 我无法弄清楚为什么我的代码返回未定义
问题描述
我试图解决给定的挑战。
我找不到为什么我的代码没有返回值的问题。
给定一个整数数组,找出出现奇数次的那个。
总是只有一个整数出现奇数次。
输入:[20、1、-1、2、-2、3、3、5、5、1、2、4、20、4、-1、-2、5]
function findOdd(array) {
let answer
for (let i = 0; i<array.length; i++){
let counter = 0;
const value = array[i]
for(let k = 0; k < array.lengh; k++){
if( value == array[k]){
counter++
}
if(counter % 2 !== 0){
answer = value;
}
}
}
return answer
}
console.log(findOdd([ 20, 1, -1, 2, -2, 3, 3, 5, 5, 1, 2, 4, 20, 4, -1, -2, 5 ]));
解决方案
那是因为你拼错length
了 as lengh
。更改for(let k = 0; k < array.lengh; k++){
为for(let k = 0; k < array.length; k++){
。
请注意,即使您更正它,您的代码仍然无法执行您想要的操作,它仍然无法找到在特定输入中出现奇数次的数字。
这是我编写的代码,可以帮助您实现所需的目标:
function findOdd(array) {
let occurences = {};
array.forEach(num => {
if (!occurences.hasOwnProperty(num)) {
occurences[num] = 1;
} else {
occurences[num] += 1;
}
})
for (let key in occurences) {
if (occurences.hasOwnProperty(key) && occurences[key] % 2 == 1) {
return key;
}
}
}
console.log(findOdd([1, 1, 1, 1, 1, 1, 10, 1, 1, 1, 1]));
我首先在对象中添加所有数字及其出现occurrences
。然后我遍历对象的属性并检查哪个属性出现奇数次。请注意,如果有多个数字出现奇数次,则将返回找到的第一个。
推荐阅读
- javascript - 测试“非空”并在 JS 中相应设置值的紧凑方法
- amazon-web-services - 克隆 AWS RDS 中的一个数据库以获得测试数据库
- php - 带有 Prestashop 1.7 的 php:致命错误:未捕获的错误:未在中找到类“Db”
- haskell - 删除单词的第一个字母并将其附加到末尾的函数(Haskell)
- java - JavaFX / Intellij 错误
- python - 在 Python 中过滤文件内容不起作用
- reactjs - 反应js | Jodit 编辑器表合并在生产构建后不起作用
- javascript - VueJS - 如何发送一个 JSON 数组的 POST 请求,每个数组除了每个数组元素的文件或图片之外,还包括数据
- python - 具有 3 个点的仿射变换和合并图像
- php - 从 MYSQL 数据创建数组以使用准备好的语句显示为复选框值