当前位置: 首页 > news >正文

网站服务器 2核如何制作网站免费建站

网站服务器 2核,如何制作网站免费建站,自己做的网站算广告吗,网站代码编辑器处理数组array的函数已经学习完,接下来是collection相关的函数, collection指的是一组用于处理集合(如数组或对象)的工具函数。 lodash源码研读之forEach,forEachRight,map,flatMap,flatMapDeep,flatMapDepth 一、源码地址 GitH…

处理数组array的函数已经学习完,接下来是collection相关的函数, collection指的是一组用于处理集合(如数组或对象)的工具函数。

lodash源码研读之forEach,forEachRight,map,flatMap,flatMapDeep,flatMapDepth

一、源码地址

  •  GitHub 地址: GitHub - lodash/lodash: A modern JavaScript utility library delivering modularity, performance, & extras.
  • 官方文档地址: Lodash 官方文档

二、结构分析

forEach基于arrayEach,baseEach模块,forEachRight基于arrayEachRight,baseEachRight模块,map基于arrayMap,baseMap模块,flatMap,flatMapDeep,flatMapDepth基于baseFlatten模块。

三、函数介绍

下面依次介绍各个模块。

1.arrayEach模块

function arrayEach(array, iteratee) {var index = -1,length = array == null ? 0 : array.length;while (++index < length) {if (iteratee(array[index], index, array) === false) {break;}}return array;}

 arrayEach函数遍历数组中的每个元素,并对每个元素执行传入的迭代函数(iteratee)。如果迭代函数返回 false,遍历将提前终止。

2.baseEach函数

 function createBaseEach(eachFunc, fromRight) {return function(collection, iteratee) {if (collection == null) {return collection;}if (!isArrayLike(collection)) {return eachFunc(collection, iteratee);}var length = collection.length,index = fromRight ? length : -1,iterable = Object(collection);while ((fromRight ? index-- : ++index < length)) {if (iteratee(iterable[index], index, iterable) === false) {break;}}return collection;};}var baseEach = createBaseEach(baseForOwn);

createBaseEach 函数用于生成一个新的函数 baseEach。这个新函数 baseEach 可以用来遍历集合(如数组或对象),并对其中的每个元素执行指定的操作。

3.forEach函数

  function forEach(collection, iteratee) {var func = isArray(collection) ? arrayEach : baseEach;return func(collection, getIteratee(iteratee, 3));}

forEach 函数是一个更通用的函数,它可以根据传入的 collection 的类型选择不同的遍历方式。如果是数组,则使用 arrayEach 进行遍历;否则使用 baseEach 进行遍历。这个函数的作用类似于 Loaash 中的 _.each。

4.baseEachRight模块

  function arrayEachRight(array, iteratee) {var length = array == null ? 0 : array.length;while (length--) {if (iteratee(array[length], length, array) === false) {break;}}return array;}

 arrayEachRight 的函数,该函数用于从右到左遍历一个数组,并对每个元素执行指定的操作。

5.forEachRight函数

 var baseEachRight = createBaseEach(baseForOwnRight, true);
function forEachRight(collection, iteratee) {var func = isArray(collection) ? arrayEachRight : baseEachRight;return func(collection, getIteratee(iteratee, 3));}

baseEachRight 是通过调用 createBaseEach 函数并传入 baseForOwnRight 和 true 作为参数来创建的。这意味着 baseEachRight 是一个基础的遍历函数,专门用于从右至左遍历对象或类数组结构(但不是原生数组),其中 baseForOwnRight 很可能是用于遍历对象自身属性的函数(忽略原型链上的属性).

forEachRight 是一个更高级别的函数,它根据传入的 collection 是否是数组来决定使用哪个遍历函数。如果 collection 是数组,它使用 arrayEachRight(之前定义的,专门用于数组的从右至左遍历)。如果不是数组,它则使用 baseEachRight。

6.arrayMap模块

 function arrayMap(array, iteratee) {var index = -1,length = array == null ? 0 : array.length,result = Array(length);while (++index < length) {result[index] = iteratee(array[index], index, array);}return result;}

arrayMap函数用于对数组中的每个元素执行指定的操作函数(iteratee),并将结果存储在一个新的数组中返回。

 7.baseMap模块

  function baseMap(collection, iteratee) {var index = -1,result = isArrayLike(collection) ? Array(collection.length) : [];baseEach(collection, function(value, key, collection) {result[++index] = iteratee(value, key, collection);});return result;}

baseMap 函数用于对集合(collection)中的每个元素执行指定的操作函数(iteratee),并将结果存储在一个新的数组中返回。此函数不仅适用于数组,还适用于类数组对象(array-like 对象)。

8.map函数

   function map(collection, iteratee) {var func = isArray(collection) ? arrayMap : baseMap;return func(collection, getIteratee(iteratee, 3));}

map 函数用于对集合(collection)中的每个元素执行指定的操作函数(iteratee),并将结果存储在一个新的数组中返回。此函数根据 collection 的类型来决定使用哪个具体的映射函数。

9.baseFlatten模块

   function baseFlatten(array, depth, predicate, isStrict, result) {var index = -1,length = array.length;predicate || (predicate = isFlattenable);result || (result = []);while (++index < length) {var value = array[index];if (depth > 0 && predicate(value)) {if (depth > 1) {// Recursively flatten arrays (susceptible to call stack limits).baseFlatten(value, depth - 1, predicate, isStrict, result);} else {arrayPush(result, value);}} else if (!isStrict) {result[result.length] = value;}}return result;}

baseFlatten 的函数,该函数用于将嵌套的数组(即多维数组)展平为一维数组。函数支持指定展平的深度,并且可以根据条件选择是否严格展平。之前介绍过。

  • array: 要展平的数组。
  • depth: 展平的深度。如果为 0,则不进行展平;如果为 1,则展平一层;如果为 Infinity,则完全展平。
  • predicate: 用于判断数组元素是否可以展平的函数。如果未提供,则使用 isFlattenable 函数。
  • isStrict: 布尔值,表示是否严格展平。如果为 true,则只展平符合 predicate 条件的元素;如果为 false,则将所有元素添加到结果数组中。
  • result: 用于存储展平结果的数组。如果未提供,则创建一个空数组。

10.flatMap函数

 function flatMap(collection, iteratee) {return baseFlatten(map(collection, iteratee), 1);}

 flatMap 函数首先对集合中的每个元素应用指定的操作函数(iteratee),然后将生成的嵌套数组(或结果数组)展平一层

11.flatMapDeep函数

 function flatMapDeep(collection, iteratee) {return baseFlatten(map(collection, iteratee), INFINITY);}

flatMapDeep函数首先对集合中的每个元素应用指定的操作函数(iteratee),然后将生成的嵌套数组(或结果数组)完全展平,即无论嵌套多深都将所有元素展平为一维数组

12.flatMapDepth函数

  function flatMapDepth(collection, iteratee, depth) {depth = depth === undefined ? 1 : toInteger(depth);return baseFlatten(map(collection, iteratee), depth);}

flatMapDepth 的函数,该函数首先对集合中的每个元素应用指定的操作函数(iteratee),然后将生成的嵌套数组(或结果数组)展平到指定的深度

四、总结

forEach, forEachRight, map, flatMap, flatMapDeep, flatMapDepth 都是用于遍历和操作数组或对象的函数。

 forEach 和 forEachRight 的区别在于遍历顺序,forEachRight 从右到左遍历。

map 类似于 forEach,但 map 返回新数组,而 forEach 返回原数组或对象

flatMap, flatMapDeep, flatMapDepth 是 map 的扩展,在 map 的基础上增加了扁平化功能,处理嵌套数组时更为强大。flatMapDeep 比 flatMap 更深层次地扁平化嵌套数组。flatMapDepth 允许用户指定扁平化的深度,提供了更大的灵活性。

http://www.dt0577.cn/news/43370.html

相关文章:

  • 做的网站怎么让百度收录山东东营网络seo
  • 做网站文章要一篇一篇的写吗百度推广账号注册
  • 山东网站建设推广搜索引擎最新排名
  • 北京网站建设问问q778925409霸屏新闻头条今日要闻国内新闻最新
  • 松原公司做网站的流程网络推广推广
  • 网站导航营销步骤神马seo服务
  • 建设银行临夏分行网站抖音seo软件
  • 广州黄埔网站建设公司南宁百度seo排名价格
  • 家乡网站设计模板网站关键词排名批量查询
  • 食品网站开发的背景网站快速收录工具
  • 阿里云的云服务器做网站用哪种今天发生的重大新闻事件
  • 个人网站域名取名权威发布
  • 昆明网页建站平台营销手段有哪些方式
  • 请人做阿里巴巴网站需要注意北京网站优化排名推广
  • 福州建设网站公司最常用的搜索引擎有哪些
  • 辛集市住房和城乡建设局网站网络营销工具体系
  • 外贸自己做网站什么是seo网站优化
  • 网站建设及维护干什么的百度域名收录提交入口
  • 垂直网站导航是谁做的十大免费无代码开发软件
  • 我想建设一个网站长沙seo优化服务
  • word网站的链接怎么做的网站排名优化多少钱
  • c mvc网站开发淘宝联盟怎么推广
  • 做商铺最好的网站网络推广是干什么的
  • 哪家专门做特卖的网站?培训计划方案模板
  • 哪些网站用wordpress企业培训权威机构
  • 连云港高端网站建设模板建站网页
  • 沧州网站建设网海申系统优化大师
  • 重庆网站建设工作室轻饮食网络推广方案
  • 外贸网站建设公司青岛网站seo服务
  • 深圳做网站外包公司有哪些seo搜索规则