![](/img/trans.png)
[英]JavaScript: Do I need a recursive function to solve this problem?
[英]I need guidance to solve my JavaScript problem
创建一个名为“bigOrSmall”的 function,它接受一个参数“arr”,它将是一个数字数组。 在 bigOrSmall function 内部,创建一个名为“answers”的新数组。 然后,遍历传入的 arr 参数,并检查数组中的数字是否大于 100。如果是,将“big”作为字符串推送到 answers 数组。 如果数字小于或等于 100,则将“small”作为字符串推送到 answers 数组。 返回 function 内部的 answers 数组。
这就是我到目前为止所拥有的。
function bigOrSmall(answers) {
for(let i = 0; i > 100; i++) {
return answers('big')
if(let i = 0; i <= 100; i++) {
return answers('small')
}
answers(arr[i])
}
return answers,
}
显然我知道我做的不对,因为它没有通过测试,但我想知道我是否走在正确的轨道上并获得一些提示以使我进入正确的方向。
我真的很抱歉这么说,但是,你做错了几乎所有事情。 现在,跟着我到下面给出的代码的末尾。 它将帮助您了解如何做事(非常仔细地阅读评论):
// defining function bigOrSmall which take parameter 'arr'
function bigOrSmall(arr) { // notice: `arr`
let answers = []; // declare `answers` array
for(let i = 0; i < arr.length; i++) { // iterate over `arr` array using index
if(arr[i] > 100) { // if i_th index of `arr` array is greater than 100
answers.push('big'); // then, push `big`
} else { // otherwise
answers.push('small'); // push small
}
}
return answers; // at last return `answers` array
}
let someIntegers = [1, 2, 300, 40, 229, 100]; // declare some input
let ans = bigOrSmall(someIntegers); // pass `someIntegers` in `bigOrSmall` function and capture the returned `answers` array into `ans` variable
// note: `someIntegers` is going to be passed as `arr` inside `bigOrSmall` function
console.log(ans); // print the returned answer
程序的output为:
[ 'small', 'small', 'big', 'small', 'big', 'small' ]
在循环内部,您使用return
在第一次迭代中终止 function。
你可以重构你的代码如下:
function bigOrSmall(arr) { const answers = []; for(let i = 0; i < arr.length; i++) { if (arr[i] <= 100) { answers.push('small'); } else { answers.push('big'); } } return answers } console.log(bigOrSmall([0, 105, 100]))
或者您可以使用Array.map()
使其成为单线
const mapped = [0,105,100].map(item => item <= 100? 'small': 'big') console.log(mapped)
function bigOrSmall(arr) {
const answer = =[]
for(let i = 0; i < arr.length; i++) {
if (arr[i] <= 100) {
answer.push('small)
} else {
answer.push('big')
}
return answers,
}
首先,参数应该是一个数字数组,这就是我写(arr)的原因,然后你需要声明答案数组。 然后使用循环从 0 迭代到数组的长度(您的原始循环不会停止,因为它会永远递增),然后将每个数字与 100 进行比较,然后将字符串推送到答案数组中。 您也可以使用 map 或 forEach 方法,使其看起来更干净
这对我来说看起来更好尝试一下。
function bigOrSmall(answers){
var small = true;
answers.forEach(item => {
(item <= 100) ? small = true : false;
});
(small == true) ? answers.push('big') : answers.push('small');
return answers
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.