簡體   English   中英

為什么我的代碼可以在一種環境中工作,而不能在另一種環境中工作?

[英]Why does my code work in one environment, but not in another?

我在 Codewars 上做一個 kata。 我應該寫一個 function 返回哪個數字的索引,與其他數字不同,均勻度(即 [1, 2, 4] 應該返回 0)。 我相信我有一個解決方案,並且在復制/粘貼代碼時證明是正確的,並且 console.logging 在 freecodecamps 實時服務器上,但是,當我嘗試運行它編寫的代碼時,它只通過了一個測試。 這里出了什么問題?

我已經嘗試使用 console.logs 進行測試,並且我的解決方案成立。 我知道我可以只使用過濾器來解決問題,但我不想練習基礎知識。

 let odd = []; let even = []; function isEven(num) { if (num % 2 === 0) { return true; } else { return false; } } function iqTest(numbers) { let nums = numbers.split(' ').map(function(item) { return parseInt(item, 10); }) for (let i in nums) { if (isEven(nums[i])) { even.push(nums[i]) } else { odd.push(nums[i]) } } if (even.length > odd.length) { return nums.indexOf(odd[0]) + 1; } else { return nums.indexOf(even[0]) + 1; } }

function 應該接受一串數字,其中一個既不是偶數也不是奇數,然后返回該數字的索引 + 1。

您可以采用評論中提到的方法並搜索至少一個奇數和一個偶數以及一個附加項目,至少三個項目,如果找到此組合,請提前退出。

不需要預先轉換值,因為使用isEven function 的余數運算符將值轉換為數字。

為了更快的返回值存儲索引而不是值並省略以后的indexOf搜索。

 function isEven(i) { return i % 2 === 0; } function iqTest(numbers) { var even = [], odd = [], values = numbers.split(' '); for (let i = 0; i < values.length; i++) { (isEven(values[i])? even: odd).push(i); if (even.length && odd.length && even.length + odd.length > 2) return (even.length < odd.length? even: odd)[0] + 1; } } console.log(iqTest("1 2 4")); // 1 console.log(iqTest("2 4 7 8 10")) // 3 console.log(iqTest("1 2 1 1")); // 2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM