提问人:Ayrene 提问时间:12/19/2022 最后编辑:U13-ForwardAyrene 更新时间:12/21/2022 访问量:415
返回一个大于其第 2 个值的新数组
Return a new array that is greater than its 2nd value
问:
如何返回一个新数组,其值大于其第二个值。如果传递给函数的数组包含少于两个元素,则函数应返回 false。
例如
greaterThanSecond([1,3,5,7])
应返回 [5, 7]。
greaterThanSecond([0, -3, 2, 5])
应返回 [0, 2, 5]。
greaterThanSecond([2])
应返回 false。
这就是我尝试过的。
function valGreaterThanSecond(arr) {
for (let newArr of arr) {
if (newArr > arr[1]) {
return [newArr]
}else {
return false
}
}
}
答:
0赞
Atena Dadkhah
12/19/2022
#1
你可以试试这个:
const greaterThanSecond = arr => {
if (arr.length > 1){
return arr.filter(e => e > arr[1])
}
return false
}
console.log(greaterThanSecond([1,3,5,7]))
在此函数中,首先应检查数组的长度是否不小于 2。然后我们通过检查数组中的每个数字是否大于第二个数字来过滤数组,并将这些数字保留在数组中。
0赞
Ádám Jakab
12/19/2022
#2
您可以尝试单行:
[0, -3, 2, 5].filter((element, index, array) => element > array[1])
filter 函数有 3 个参数:
- 被检查的elment
- 被检查元素的索引
- 原始阵列
筛选器遍历数组,您可以与原始数组的第二个元素进行比较
0赞
HiddenOne1254
12/19/2022
#3
function valGreaterThanSecond(arr) {
let resultArray = []
console.log(arr.length)
let checkValue = arr[1]
if(arr.length < 2)
return false
else
{
for(let i = 0 ; i < arr.length ; i++){
if(arr[i]!=checkValue && arr[i]>checkValue)
resultArray.push(arr[i])
}
return resultArray
}
}
console.log(valGreaterThanSecond([2]))
试试这个方法
0赞
Sajjad Bayat
12/19/2022
#4
你可以试试这个
function greaterThanSecond(arr) {
if (arr.length < 2)
return false;
return arr.filter((item) => item > arr[1])
}
console.log(greaterThanSecond([0,-3,2,5]))
0赞
Ben
12/21/2022
#5
首先,在我提出另一种方法之前,让我们尝试修复您的代码。
function valGreaterThanSecond(arr) {
let newArr = [];
if (arr.length < 2) return false;
for (let elem of arr) {
if (elem > arr[1]) {
newArr = [...newArr, elem]
}
}
return newArr;
};
console.log(valGreaterThanSecond([1,3,5,7]));
函数的问题在于,一旦你发现一个大于第二个元素的数字,你就会立即返回它,从而退出函数并在数组中返回这个元素,这不是你想要的。如果在数组中发现一个元素不大于第二个元素,则立即返回 false,这也不是您想要的行为。在您的示例中,您将返回 false,因为 1 < 3,此时您不在函数中。[1,3,5,7]
使用reduce
的不同方法
我想建议一种不同的方法,因为有一些答案,这是我首先想到的。filter
这是一个使用数组函数的解决方案。reduce
const greaterThanSecond = (arr) => {
if (arr.length < 2) return false;
const result = arr.reduce((acc, curr) => {
if (curr > arr[1]) return [...acc, curr];
return acc;
}, []);
return result;
}
console.log(greaterThanSecond([1,3,5,7]));
评论
newArr