良许Linux教程网 干货合集 详解lodash里的toLength和toPairs方法

详解lodash里的toLength和toPairs方法

本篇文章重点为大家讲解一下lodash里的toLength和toPairs方法,有需要的小伙伴可以参考一下。

u=4262639519,4179942702&fm=11&gp=0

正文

本篇章我们将认识lodash里的toLength方法和toPairs方法实现,同时在实现toPairs方法的过程中也能了解到其他封装的内部方法的实现。

toLength

toLength方法主要是将参数value转换为用作类数组对象的长度整数。

使用如下:

toLength(3.2)
// => 3
toLength(Number.MIN_VALUE)
// => 0
toLength(Infinity)
// => 4294967295
toLength('3.2')
// => 3

在实现上,toLength方法借助内部封装导出的toInteger方法,在 《 lodash里to系列之如何将数据转换成数字类型 》中,我们已经了解了toInteger方法,意在将参数转换为整数。

实现上对于不存在的参数直接返回0,其次将参数转换为整数,小于0的返回0,大于最大数MAX_ARRAY_LENGTH返回最大数,该方法返回的整数范围为[0,4294967295]。

源码如下:

import toInteger from './toInteger.js'
const MAX_ARRAY_LENGTH = 4294967295
function toLength(value) {
 if (!value) {
   return 0
 }
 value = toInteger(value)
 if (value return 0
 }
 if (value > MAX_ARRAY_LENGTH) {
   return MAX_ARRAY_LENGTH
 }
 return value
}

toPairs

toPairs方法主要是创建一个object对象自身可枚举属性的键值对数组。这个数组可以通过_.fromPairs撤回。如果object 是 map 或 set,将会返回其条目。

使用如下:

function Foo() {
this.a = 1;
this.b = 2;
}
Foo.prototype.c = 3;
_.toPairs(new Foo);
// => [['a', 1], ['b', 2]]

toPairs方法在实现上借助内部封装的createToPairs工厂函数和keys方法实现,其中keys是对外导出的方法。

源码如下:

import createToPairs from './_createToPairs.js';
import keys from './keys.js';
var toPairs = createToPairs(keys);

createToPairs

createToPairs方法是内部方法,充当对象pairs过程的工厂函数,实现上,先通过getTag获取对象的数据类型标签,对于Map对象返回mapToArray调用结果,对于Set对象返回setToPairs调用结果,其他对象类型直接返回baseToPairs调用结果。

import baseToPairs from './_baseToPairs.js';
import getTag from './_getTag.js';
import mapToArray from './_mapToArray.js';
import setToPairs from './_setToPairs.js';
var mapTag = '[object Map]',
   setTag = '[object Set]';
function createToPairs(keysFunc) {
 return function(object) {
   var tag = getTag(object);
   if (tag == mapTag) {
     return mapToArray(object);
   }
   if (tag == setTag) {
     return setToPairs(object);
   }
   return baseToPairs(object, keysFunc(object));
 };
}

baseToParis

baseToParis作为内部方法,主要处理普通对象的pairs过程,通过arrayMap方法处理参数。

import arrayMap from './_arrayMap.js';
function baseToPairs(object, props) {
 return arrayMap(props, function(key) {
   return [key, object[key]];
 });
}

arrayMap

arrayMap作为内部方法,主要处理数组的映射。

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

mapToArray

mapToArray作为内部方法,主要处理Map对象转换数组,实现上通过遍历获取。

function mapToArray(map) {
 var index = -1,
     result = Array(map.size);
 map.forEach(function(value, key) {
   result[++index] = [key, value];
 });
 return result;
}

setToPairs

setToPairs作为内部方法,主要处理Set对象转换数组,实现上通过遍历获取。

function setToPairs(set) {
 var index = -1,
     result = Array(set.size);
 set.forEach(function(value) {
   result[++index] = [value, value];
 });
 return result;
}

小结

本篇章我们通过了解toLength方法和toPairs方法的实现,同时也认识了如处理map和set向数组的转化,以及普通对象转换数组的baseToPairs方法

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部