gpt4 book ai didi

javascript - 为什么我的三元组无法测试数组的元素?

转载 作者:行者123 更新时间:2023-11-28 14:23:51 25 4
gpt4 key购买 nike

我一直在研究这个函数,对其进行分解并测试它的各个部分。如果参数 >= 89,它应该返回“Pass”。

一切似乎都工作正常,直到函数最后我对 gradesArray 数组的每个元素调用 aRange 为止。在排除故障期间,我发现 sort 函数确实返回数字,因此每个元素应该能够针对 aRange 三元组进行测试。我错过了什么?

function testResults(finalExam, test1, test2) {
//The ternary works when tested in isolation
function aRange(test) {
return (Math.abs(test - 100) < 12)? "Pass" : "Fail";
}
//MDN says sort turns arguments into a string and compares, yet when tested it keep everything as a number(?)
function sortArgs(...tests) {
return tests.sort(function(a,b) { return b - a })
}

let resultsArr = [];
let gradesArray = sortArgs(finalExam, test1, test2);
for (let grade in gradesArray) {
resultsArr.push(aRange(grade));
}
return resultsArr;
}

console.log(testResults(96, 88, 92))
// should return 'Pass', 'Fail', 'Pass'
// instead returns 'Fail', 'Fail', 'Fail'

最佳答案

您代码中的问题是 for in 。因为 in 迭代索引而不是值,因此您在范围函数中传递索引 0,1,2 这就是它返回失败的原因。

console.log(testResults(96, 88, 92))

function testResults(finalExam, test1, test2) {

function aRange(test) {
return (Math.abs(test - 100) < 12)? "Pass" : "Fail";
}
let resultsArr = [];
let gradesArray = [finalExam, test1, test2];
for(let i=0; i<gradesArray.length; i++) {
resultsArr.push(aRange(gradesArray[i]));
}
return resultsArr;
}

您只需一行即可完成。

let arr = [96, 88, 92]

let op = arr.map(e=> e>=89 ? 'Pass' : 'Fails')

console.log(op)

关于javascript - 为什么我的三元组无法测试数组的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54368223/

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