gpt4 book ai didi

javascript - 基本算法脚本: Finders Keepers challenge

转载 作者:行者123 更新时间:2023-11-28 16:58:10 24 4
gpt4 key购买 nike

有人可以告诉我为什么 FCC 不接受我的解决方案,即使它通过了所有测试?

下面是挑战的链接,但我将在此处发布问题和测试,以更好地遵守社区。

FCC 挑战:

https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/finders-keepers

基本算法脚本:发现者和守护者

创建一个函数,该函数查看数组(第一个参数)并返回数组中通过真值测试的第一个元素(第二个参数)。如果没有元素通过测试,则返回 undefined。

findElement([1, 3, 5, 8, 9, 10], function(num) { return num % 2 === 0; })应返回 8。

findElement([1, 3, 5, 9], function(num) { return num % 2 === 0; })应返回未定义。

我已返回如下解决方案:

function findElement(arr, func) {
"use strict"
return arr.filter(num => func(num)).toString('').substring(1,0);
}

console.log(findElement([1, 3, 5, 8, 9, 10], num => num % 2 === 0));
// It returns 8 as expected...

console.log(findElement([1, 3, 5, 8, 9, 10], num => num % 2 === 0));的结果正如预期的那样是 8,但由于某种原因它没有通过测试。

我想知道我是否做错了什么。

谢谢

最佳答案

您有一些问题。目前,您正在返回字符串的一部分(可能不包括整个结果),而实际上您应该返回与谓词匹配的第一个元素的整个值(即:传递的函数)。这意味着您返回的是字符串而不是数字,这已经是不正确的。此外,当传递的函数与任何值都不匹配时,您不会返回 undefined

相反,请考虑更改您的代码,以便它从 .filter() 返回的数组中获取第一个元素(通过定位索引 [0])或通过使用 .find() 方法(一旦找到它的值就会停止循环),如下所示:

function findElement(arr, func) {
"use strict"
return arr.find(func); // non point-free version: arr.find(n => func(n))
}

console.log(findElement([1, 3, 5, 8, 9, 10], num => num % 2 === 0)); // 8
console.log(findElement([1, 50], num => num % 2 === 0)); // 50
console.log(findElement([1, 1], num => num % 2 === 0)); // undefined

关于javascript - 基本算法脚本: Finders Keepers challenge,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58496935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com