分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

JS中some(),every(),forEach(),map(),filter()区别

发布时间:2023-09-06 01:16责任编辑:沈小雨关键词:暂无标签

JS在1.6中为Array新增了几个方法map(),filter(),some(),every(),forEach(),也就是一共有这么多方法了。

刚开始接触这些倒也记得不是很清楚,在此纪录一下以加深影响。我主要从两个角度来理解和记忆吧,一个是API的使用,一个是内部实现。

函数简述

map():返回一个新的Array,每个元素为调用func的结果

filter():返回一个符合func条件的元素数组

some():返回一个boolean,判断是否有元素是否符合func条件

every():返回一个boolean,判断每个元素是否符合func条件

forEach():没有返回值,只是针对每个元素调用func

API的区别

function my_func(item) { ?if (item == 1) { ???console.log(‘t‘); ???return true; ?} ?console.log(‘f‘); ?return false;}// init an arrayl = [0,1,2,3,4]// print: f,t,f,f,f// return:[false, true, false, false, false]l.map(my_func)// print: f,t,f,f,f// return: 1l.filter(my_func)// print: f,t// return: truel.some(my_func)// print: f// return: falsel.every(my_func)// print: f,t,f,f,f//return: undefinedl.forEach(my_func)内部实现// From:http://developer.mozilla.orgArray.prototype.map = function(fun /*, thisp*/){ ?var len = this.length; ?if (typeof fun != "function") ???throw new TypeError(); ?var res = new Array(len); ?var thisp = arguments[1]; ?for (var i = 0; i < len; i++) ?{ ???if (i in this) ?????res[i] = fun.call(thisp, this[i], i, this); ?} ?return res;};Array.prototype.filter = function(fun /*, thisp*/){ ?var len = this.length; ?if (typeof fun != "function") ???throw new TypeError(); ?var res = new Array(); ?var thisp = arguments[1]; ?for (var i = 0; i < len; i++) ?{ ???if (i in this) ???{ ?????var val = this[i]; // in case fun mutates this ?????if (fun.call(thisp, val, i, this)) ???????res.push(val); ???} ?} ?return res;};Array.prototype.some = function(fun /*, thisp*/){ ?var len = this.length; ?if (typeof fun != "function") ???throw new TypeError(); ?var thisp = arguments[1]; ?for (var i = 0; i < len; i++) ?{ ???if (i in this && fun.call(thisp, this[i], i, this)) ?????return true; ?} ?return false;};Array.prototype.every = function(fun /*, thisp*/){ ?var len = this.length; ?if (typeof fun != "function") ???throw new TypeError(); ?var thisp = arguments[1]; ?for (var i = 0; i < len; i++) ?{ ???if (i in this && !fun.call(thisp, this[i], i, this)) ???return false; ?} ?return true;};Array.prototype.forEach = function(fun /*, thisp*/){ ?var len = this.length; ?if (typeof fun != "function") ???throw new TypeError(); ?var thisp = arguments[1]; ?for (var i = 0; i < len; i++) ?{ ???if (i in this) ?????fun.call(thisp, this[i], i, this); ?}};

JS中some(),every(),forEach(),map(),filter()区别

原文地址:http://www.cnblogs.com/cosyer/p/7646925.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved