<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
let arr = [
{
id:1,
title:"eating",
},
{
id:2,
title:"sing",
},
{
id:3,
title:"play"
}
];
/*
some()方法会依次执行数组的每个元素;
如果有一个元素满足条件,则表达式返回true,剩余的元素不会再执行检测。如果没有满足条件的元素,则返回false
注意:some()不会对空数组进行检测
some()不会改变原始数组
*/
Array.prototype.some = function(callback){
// this 指向它调用的数组
let _arr = this;
let _len = _arr.length;
// 接收第二个参数 如果传入第二个参数 this指向这个参数 否则指向 window
let arg2 = arguments[1] || window
let newArr = [];
for(var i=0;i<_len;i++){
// 改变 this 指向 的三种实现
let isOk = callback.call(arg2,_arr[i],i,_arr);
// let isOk = callback.apply(arg2,[_arr[i],i,_arr]);
// let isOk = callback.bind(arg2,_arr[i],i,_arr)();
if(isOk){
return true
}
}
return false
}
const res = arr.some((item)=>{
console.log("item",item);
return item.id > 2;
})
console.log('res',res);
/*
输出结果:item {id: 1, title: "eating"}
item {id: 2, title: "sing"}
item {id: 3, title: "play"}
res true
*/
</script>
</body>
</html>加粗样式
原生js源码之Array数组some方法
最新推荐文章于 2024-04-11 14:26:04 发布