Javascript 如何编写一个返回大于某个数字的数组元素的函数
给定一个数组 arr 和一个数字 n ,编写一个函数,返回数组中大于n的元素组成的数组。
示例:
Input: arr = [65, 16, 0, 6, 64, 1, 68]
n = 16
Output: [65, 64, 68]
Input: arr = [6, 46, 54, 6, 56, 54, 65, 4, 65]
n = 50
Output: [54, 56, 54, 65, 65]
为了实现这一点,我们有以下方法:
方法1:使用Array.filter()
在这种方法中,我们使用 Array.filter 方法。在每次迭代中,我们检查值是否大于num。
示例:
<script>
let returnLarger = (arr, num) => arr.filter(n => n > num);
console.log(returnLarger( [65, 16, 0, 6, 64, 1, 68], 16))
console.log(returnLarger([6, 46, 54, 6, 56, 54, 65, 4, 65], 50))
</script>
输出:
[65, 64, 68]
[54, 56, 54, 65, 65]
方法2:使用Array.reduce()
在这个方法中,我们使用数组的reduce方法。使用一个空数组来初始化累加器,并在每次迭代中检查当前值是否大于 num 如果是,则将当前值与累加器连接起来并返回,否则将累加器原样返回。
示例:
<script>
// Creating a function that return an array
// whose items are less than num
let returnLarger = (arr, num) => {
return arr.reduce((acc, curr)=>{
if(curr > num){
return acc.concat(curr) // Concatenate the acc with arr
}else{
return acc
}
}, []) // Initialize the accumulator with an empty array
}
console.log(returnLarger( [65, 16, 0, 6, 64, 1, 68], 16))
console.log(returnLarger([6, 46, 54, 6, 56, 54, 65, 4, 65], 50))
</script>
输出:
[65, 64, 68]
[54, 56, 54, 65, 65]
方法3:使用Array.map方法
在这种方法中,我们使用map方法迭代数组,并在每次迭代时检查当前值是否大于 num ?如果为真,则将该值原样返回。如果为假,则将该项替换为空字符串(或任何falsy值)。然后使用filter方法删除falsy值。
<script>
// Creating a function that return an array
// whose items are less than num
let returnLarger = (arr, num) => {
return arr.map(v => v > num ? v : "").filter(Boolean)
}
console.log(returnLarger( [65, 16, 0, 6, 64, 1, 68], 16))
console.log(returnLarger([6, 46, 54, 6, 56, 54, 65, 4, 65], 50))
</script>
输出:
[65, 64, 68]
[54, 56, 54, 65, 65]
方法4:使用for循环
在这种方法中,我们创建一个空数组,使用for循环迭代给定的数组,并在每次迭代时检查当前值是否大于num。如果为真,则将该值推入新创建的数组中。
<script>
// Creating a function that return an array
// whose items are less than num
let returnLarger = (arr, num) => {
let newArr = []
for(let i = 0; i < arr.length; i++){
if(arr[i] > num){
newArr.push(arr[i])
}
}
return newArr
}
console.log(returnLarger( [65, 16, 0, 6, 64, 1, 68], 16))
console.log(returnLarger([6, 46, 54, 6, 56, 54, 65, 4, 65], 50))
</script>
输出:
[65, 64, 68]
[54, 56, 54, 65, 65]
方法5:使用forEach循环
在这种方法中,我们创建一个空数组并使用forEach循环迭代给定的数组,每次迭代时,我们使用与运算符对表达式进行操作,其中第一个操作符检查当前值是否大于num,如果返回false,则不执行新操作,如果返回true,则将元素推送到数组中。
<script>
// Creating a function that return an array
// whose items are less than num
let returnLarger = (arr, num) => {
let newArr = []
arr.forEach( ele => (ele > num) && newArr.push(ele))
return newArr
}
console.log(returnLarger( [65, 16, 0, 6, 64, 1, 68], 16))
console.log(returnLarger([6, 46, 54, 6, 56, 54, 65, 4, 65], 50))
</script>
输出:
[ 65, 64, 68 ]
[ 54, 56, 54, 65, 65 ]
极客教程