数组之every和some方法
2020-03-16 本文已影响0人
小雪洁
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>every与some方法</title>
</head>
<body>
<input name="title"/>
<span></span>
</body>
<script>
//arr.every()方法,判断元素全部满足某个条件,
//有一个不满足返回false,不在继续遍历剩余元素
//注意function(){}内部返回判别的表达式,返回false或true
const users=[
{name:"hxj",age:30},
{name:"ydc",age:28},
{name:"hwx",age:34}
];
//arr.every(function(item,index,arr){}),
//要判断元素每个值是否符合要求,必须在function里最后返回return 判断表达式;
//否则every()内部的函数只执行一次就返回了false,
let res=users.every(function(item,index,arr){
//console.log(item);//{name: "hxj", age: 30}
return false;//返回false时,只打印第一个元素,
//return true;//返回true时,打印所有元素
});
//console.log(res);//false
let res1=users.every(function(item,index,arr){
return item.age>=30;
//只要遇到有一个不满足条件的就返回false,不在继续执行
});
res1?console.log("全部30岁以上"):console.log("有不满30岁的");
//arr.some(function(item,index,arr){})
//some()函数内只要有一个返回true就不再继续遍历元素了,返回true
let res2=users.some(function(item,index,arr){
console.log(item);
//return false; //返回false时,打印全部
return true;//返回true时,只打印第一个
});
//console.log(res2);//true
let res3=users.some(function(item,index,arr){
console.log(item); //只输出一次{name: "hxj", age: 30}
return item.age>=30;
});
console.log(res3); //即返回true
//实现用户输入表单,键盘抬起时监听输入的内容是否包含php或者js
let keywords=["php","js"];
let title = document.querySelector('[name="title"]');
let span=document.querySelector("span");
title.addEventListener("keyup",function(){
let _this=this;
let res=keywords.some(function(item){
return _this.value.includes(item);
});
/* if(res){
span.innerHTML="";
}else{
span.innerHTML=`必须包含${keywords.join(",")}关键词`;
} */
span.innerHTML=(res?"":`必须包含${keywords.join(",")}关键词`);
})
</script>
</html>