最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

lodash里的toLength和toPairs方法詳解

 更新時間:2022年08月24日 10:08:33   作者:EricHong  
這篇文章主要為大家介紹了lodash里的toLength和toPairs方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

本篇章我們將認識lodash里的toLength方法和toPairs方法實現(xiàn),同時在實現(xiàn)toPairs方法的過程中也能了解到其他封裝的內(nèi)部方法的實現(xiàn)。

toLength

toLength方法主要是將參數(shù)value轉(zhuǎn)換為用作類數(shù)組對象的長度整數(shù)。

使用如下:

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

在實現(xiàn)上,toLength方法借助內(nèi)部封裝導出的toInteger方法,在 《 lodash里to系列之如何將數(shù)據(jù)轉(zhuǎn)換成數(shù)字類型 》中,我們已經(jīng)了解了toInteger方法,意在將參數(shù)轉(zhuǎn)換為整數(shù)。

實現(xiàn)上對于不存在的參數(shù)直接返回0,其次將參數(shù)轉(zhuǎn)換為整數(shù),小于0的返回0,大于最大數(shù)MAX_ARRAY_LENGTH返回最大數(shù),該方法返回的整數(shù)范圍為[0,4294967295]。

源碼如下:

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

toPairs

toPairs方法主要是創(chuàng)建一個object對象自身可枚舉屬性的鍵值對數(shù)組。這個數(shù)組可以通過_.fromPairs撤回。如果object 是 map 或 set,將會返回其條目。

使用如下:

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

toPairs方法在實現(xiàn)上借助內(nèi)部封裝的createToPairs工廠函數(shù)和keys方法實現(xiàn),其中keys是對外導出的方法。

源碼如下:

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

createToPairs

createToPairs方法是內(nèi)部方法,充當對象pairs過程的工廠函數(shù),實現(xiàn)上,先通過getTag獲取對象的數(shù)據(jù)類型標簽,對于Map對象返回mapToArray調(diào)用結(jié)果,對于Set對象返回setToPairs調(diào)用結(jié)果,其他對象類型直接返回baseToPairs調(diào)用結(jié)果。

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作為內(nèi)部方法,主要處理普通對象的pairs過程,通過arrayMap方法處理參數(shù)。

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

arrayMap

arrayMap作為內(nèi)部方法,主要處理數(shù)組的映射。

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;
}

mapToArray

mapToArray作為內(nèi)部方法,主要處理Map對象轉(zhuǎn)換數(shù)組,實現(xiàn)上通過遍歷獲取。

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

setToPairs

setToPairs作為內(nèi)部方法,主要處理Set對象轉(zhuǎn)換數(shù)組,實現(xiàn)上通過遍歷獲取。

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

小結(jié)

本篇章我們通過了解toLength方法和toPairs方法的實現(xiàn),同時也認識了如處理map和set向數(shù)組的轉(zhuǎn)化,以及普通對象轉(zhuǎn)換數(shù)組的baseToPairs方法,更多關(guān)于lodash方法toLength toPairs的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一文詳解js基本類型與引用類型的區(qū)別

    一文詳解js基本類型與引用類型的區(qū)別

    這篇文章主要為大家介紹了js基本類型與引用類型的區(qū)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • 微信小程序 教程之事件

    微信小程序 教程之事件

    這篇文章主要介紹了微信小程序 事件的相關(guān)資料,并附實例代碼,需要的朋友可以參考下
    2016-10-10
  • JavaScript 中for/of,for/in 的詳細介紹

    JavaScript 中for/of,for/in 的詳細介紹

    這篇文章主要介紹了JavaScript 中的for/of, for/in,在 JavaScript中,for 循環(huán)有幾種常見的寫法,西阿棉文章有寫法的詳細內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • WindiCSS實現(xiàn)加載windi.config.ts配置文件詳解

    WindiCSS實現(xiàn)加載windi.config.ts配置文件詳解

    這篇文章主要為大家介紹了WindiCSS實現(xiàn)加載windi.config.ts配置文件詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • 微信小程序 Canvas增強組件實例詳解及源碼分享

    微信小程序 Canvas增強組件實例詳解及源碼分享

    這篇文章主要介紹了微信小程序 Canvas增強組件實例詳解及源碼分享的相關(guān)資料,WeZRender是一個微信小程序Canvas增強組件,這里詳細介紹,需要的朋友可以參考下
    2017-01-01
  • Uncaught EvalError:Refused to evaluate a string as JavaScript解決

    Uncaught EvalError:Refused to evaluate a

    這篇文章主要為大家介紹了Uncaught EvalError:Refused to evaluate a string as JavaScript解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Javascript中bind()方法綁定函數(shù)的使用與實現(xiàn)

    Javascript中bind()方法綁定函數(shù)的使用與實現(xiàn)

    這篇文章主要為大家介紹了Javascript中bind()方法綁定函數(shù)的使用與實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • 詳解Anyscript開發(fā)指南繞過typescript類型檢查

    詳解Anyscript開發(fā)指南繞過typescript類型檢查

    這篇文章主要為大家介紹了詳解Anyscript開發(fā)指南繞過typescript類型檢查,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • js面試題繼承的方法及優(yōu)缺點解答

    js面試題繼承的方法及優(yōu)缺點解答

    這篇文章主要為大家介紹了js面試題繼承的方法及優(yōu)缺點解答,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • JS前端白屏前世今生及解決方式

    JS前端白屏前世今生及解決方式

    這篇文章主要為大家介紹了JS前端白屏前世今生及解決方式案例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08

最新評論

公安县| 潜山县| 岳池县| 江门市| 丰原市| 南投市| 沂水县| 蒙城县| 洪湖市| 攀枝花市| 武强县| 甘南县| 沁源县| 延边| 兴义市| 那坡县| 庆元县| 收藏| 临泽县| 高要市| 沁水县| 杨浦区| 南木林县| 康定县| 平潭县| 师宗县| 商水县| 山丹县| 巩留县| 龙南县| 富民县| 金沙县| 满洲里市| 比如县| 灌阳县| 宜兰县| 拜城县| 中山市| 新昌县| 囊谦县| 安陆市|