javascript 返回大于其第二个值的新数组

e7arh2l6  于 2022-12-21  发布在  Java
关注(0)|答案(5)|浏览(138)

如何返回一个新的数组,它的值大于它的第二个值。如果传递给函数的数组的元素少于两个,函数应该返回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
        }
    }
 }
kcwpcxri

kcwpcxri1#

您可以尝试一行代码:

[0, -3, 2, 5].filter((element, index, array) => element > array[1])

过滤函数有3个参数:
1.检查的元素
1.检查元素的索引
1.原始数组
过滤器遍历数组,您可以与原始数组的第二个元素进行比较

of1yzvn4

of1yzvn42#

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]))

试试这个方法

ymdaylpp

ymdaylpp3#

你可以试试这个

function greaterThanSecond(arr) {
    if (arr.length < 2)
        return false;
    return arr.filter((item) => item > arr[1])
}
console.log(greaterThanSecond([0,-3,2,5]))
apeeds0o

apeeds0o4#

你可以试试这个:

const greaterThanSecond = arr => {
   if (arr.length > 1){ 
      return arr.filter(e => e > arr[1])
   }
   return false
}
console.log(greaterThanSecond([1,3,5,7]))

在这个函数中,首先你应该检查数组的长度是否不小于2,然后我们通过检查数组中的每个数字是否大于第二个数字来过滤数组,并将那些数字保留在数组中。

pkwftd7m

pkwftd7m5#

在我提出另一种方法之前,首先让我们尝试修复您的代码。

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;
 }

你的函数的问题是,一旦你发现一个数大于第二个元素,你就立即返回它,这样就退出了函数,并返回数组中的这个元素,这不是你想要的。如果你发现数组中的一个元素不大于第二个元素,你就立即返回false。这也不是你想要的行为,在[1,3,5,7]的例子中,你会返回false,因为1〈3,此时你已经退出函数了。

使用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;
}

JSFiddle

相关问题