filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。
注意: filter() 不会改变原始数组。
语法 : filter((item, index, arr) =>{ ... })
filter中一共可已设置三个入参:其中item( 必填 )--代表数组中的每个元素,filter会对每个元素进行遍历;
index( 先填 )--每个元素的index;arr( 选填 )--指定要遍历的数组。
要筛选数组中的奇数位元素或者偶数位元素就可以用filte()方法。
例子:
<!DOCTYPE html><html lang="en">
<head>
<title>奇偶数</title>
</head>
<body>
<input type=text>
<input type=button value="判断" onclick="chk(value)">
<p id="demo"></p>
<script>
function chk(num) {
var inputs = document.getElementsByTagName('input')[0]
var value = inputs.value
num = value
console.log(num)
alert((num % 2 == 0) ? "偶数" : "奇数") //判断是否能整除2
}
</script>
</body>
</html>
我写了一个便于理解的算法,只要进行一次循环,不用排序。请参考:
var arr = [1,3,5,7,9,2,4,6,8,10] //定义一个数组alert(func(arr)) //调用函数
function func(arr){
var odd = null, //odd是存放最大奇数的变量
even = null //even是存放最小偶数的变量
//下面对数组元素进行循环判断
for(var n = 0 n < arr.length n++){
//如果元素模2为0,则是偶数
if(arr[n] % 2 == 0){
//如果odd变量是null,或者当前元素大于odd
//则给odd变量值替换为当前元素
if(odd == null || arr[n] > odd){
odd = arr[n]
}
}
//同理,
//如果元素模2不为0,则是奇数
if(arr[n] % 2 != 0){
//如果even变量是null,或者当前元素小于even
//则给even变量值替换为当前元素
if(even == null || arr[n] < even){
even = arr[n]
}
}
}
//最后返回结果
if(odd != null && even != null){
return odd + even
}else{
return null
}
}