欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

十個JavaScript?lodash中的高頻使用方法整理

 更新時間:2024年01月11日 10:27:16   作者:慕仲卿  
本文梳理lodash中那些高頻使用的超究極無敵好用方法,熟練使用下面的十個方法能夠讓你的代碼原地起飛,為你的開發(fā)之旅極大的減輕心智負(fù)擔(dān),快跟隨小編一起學(xué)習(xí)一下吧

1. throttle

用途:限制事件處理函數(shù)的調(diào)用頻率,如在滾動事件中。 代碼示例

import React, { useEffect } from 'react';
import { throttle } from 'lodash';

const ScrollComponent = () => {
  useEffect(() => {
    const handleScroll = throttle(() => {
      console.log('Scrolled!');
    }, 1000);

    window.addEventListener('scroll', handleScroll);

    return () => window.removeEventListener('scroll', handleScroll);
  }, []);

  return <div>Scroll down this component to see throttling in action.</div>;
};

詳細(xì)解釋:此代碼中使用 throttle 來限制滾動事件處理器 handleScroll 的執(zhí)行頻率。即使用戶持續(xù)滾動頁面,handleScroll 函數(shù)也只會每 1000 毫秒觸發(fā)一次。

2. cloneDeep

用途:在狀態(tài)更新或復(fù)雜對象操作中深度克隆對象。 代碼示例

import React, { useState } from 'react';
import { cloneDeep } from 'lodash';

const ComplexStateComponent = () => {
  const [state, setState] = useState({ nested: { counter: 0 } });

  const incrementCounter = () => {
    const newState = cloneDeep(state);
    newState.nested.counter += 1;
    setState(newState);
  };

  return (
    <div>
      <button onClick={incrementCounter}>Increment</button>
      <p>Counter: {state.nested.counter}</p>
    </div>
  );
};

詳細(xì)解釋:這里使用 cloneDeep 來創(chuàng)建 state 對象的深層副本。這樣做是為了避免直接修改狀態(tài)對象,從而遵循 React 的不可變性原則。

3. merge

用途:合并多個對象,尤其是嵌套對象。 代碼示例

import React from 'react';
import { merge } from 'lodash';

const MergeObjectsComponent = () => {
  const defaultOptions = { color: 'blue', size: 'medium', settings: { sound: 'off' } };
  const userOptions = { size: 'large', settings: { sound: 'on' } };

  const options = merge({}, defaultOptions, userOptions);

  return <div>Options: {JSON.stringify(options)}</div>;
};

詳細(xì)解釋:在這個示例中,merge 用于合并 defaultOptionsuserOptions 對象。由于是深度合并,userOptions 中的 settings 對象將合并到 defaultOptionssettings 中,而不是替換掉它。

4. uniq 和 uniqBy

用途:去除數(shù)組中的重復(fù)項。 代碼示例

import React from 'react';
import { uniq, uniqBy } from 'lodash';

const UniqueArraysComponent = () => {
  const numbers = [1, 2, 1, 3, 2];
  const uniqueNumbers = uniq(numbers);

  const users = [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 1, name: 'Alice' }];
  const uniqueUsers = uniqBy(users, 'id');

  return (
    <div>
      Unique Numbers: {uniqueNumbers.join(', ')}
      <br />
      Unique Users: {uniqueUsers.map(user => user.name).join(', ')}
    </div>
  );
};

詳細(xì)解釋uniq 用于去除數(shù)字?jǐn)?shù)組 numbers 中的重復(fù)項。uniqBy 用于根據(jù)特定屬性(這里是 id)去除對象數(shù)組 users 中的重復(fù)項。

5. sortBy

用途:按特定標(biāo)準(zhǔn)對數(shù)組進行排序。 代碼示例

import React from 'react';
import { sortBy } from 'lodash';

const SortArrayComponent = () => {
  const users = [
    { name: 'Alice', age: 30 },
    { name: 'Bob', age: 24 },
    { name: 'Carol', age: 29 }
  ];
  const sortedUsers

 = sortBy(users, ['age']);

  return (
    <ul>
      {sortedUsers.map(user => (
        <li key={user.name}>{user.name} - {user.age}</li>
      ))}
    </ul>
  );
};

詳細(xì)解釋:在這個例子中,sortBy 被用來根據(jù)年齡 (age) 對用戶數(shù)組進行排序。結(jié)果是一個按年齡升序排列的用戶列表。

6. pick 和 omit

用途:創(chuàng)建對象的子集或剔除某些屬性。 代碼示例

import React from 'react';
import { pick, omit } from 'lodash';

const UserComponent = ({ user }) => {
  const userDetails = pick(user, ['name', 'email']); // 只包含 name 和 email
  const sanitizedUser = omit(user, ['password']); // 排除 password

  return (
    <div>
      User Details: {JSON.stringify(userDetails)}
      <br />
      Sanitized User: {JSON.stringify(sanitizedUser)}
    </div>
  );
};

詳細(xì)解釋:在這個例子中,pick 用于從 user 對象中選擇性地包含 nameemail 屬性。omit 則用于從相同的 user 對象中排除 password 屬性。這對于處理敏感信息或限制傳遞給子組件的屬性非常有用。

7. get 和 set

用途:安全地訪問和設(shè)置嵌套對象屬性。 代碼示例

import React, { useState } from 'react';
import { get, set } from 'lodash';

const NestedObjectComponent = () => {
  const [user, setUser] = useState({ info: { name: { first: 'John', last: 'Doe' } } });

  const updateLastName = lastName => {
    const newUser = set({ ...user }, 'info.name.last', lastName);
    setUser(newUser);
  };

  return (
    <div>
      Current Name: {get(user, 'info.name.first')} {get(user, 'info.name.last')}
      <button onClick={() => updateLastName('Smith')}>Change Last Name</button>
    </div>
  );
};

詳細(xì)解釋:在此示例中,get 用于安全地訪問嵌套的 name 對象,即使 infoname 屬性不存在也不會導(dǎo)致錯誤。set 用于安全地更新 user 對象中嵌套的 last 名屬性,避免直接修改原始狀態(tài)。

8. memoize

用途:緩存昂貴計算函數(shù)的結(jié)果。 代碼示例

import React, { useState, useEffect } from 'react';
import { memoize } from 'lodash';

const expensiveFunction = memoize((num) => {
  console.log('Expensive calculation executed!');
  return num * num;
});

const MemoizeComponent = () => {
  const [result, setResult] = useState();

  useEffect(() => {
    setResult(expensiveFunction(10));
  }, []);

  return <div>Result: {result}</div>;
};

詳細(xì)解釋:這里使用 memoize 來緩存 expensiveFunction 的結(jié)果。當(dāng)使用相同參數(shù)再次調(diào)用函數(shù)時,它將返回緩存的結(jié)果而不是重新計算。

9. isEqual

用途:深度比較兩個對象或數(shù)組是否相等。 代碼示例

import React, { useState, useEffect } from 'react';
import { isEqual } from 'lodash';

const CompareComponent = () => {
  const [userA, setUserA] = useState({ name: 'John', age: 30 });
  const [userB, setUserB] = useState({ name: 'John', age: 30 });

  useEffect(() => {
    if (isEqual(userA, userB)) {
      console.log('Users are equal!');
    }
  }, [userA, userB]);

  return <div>Check console for comparison result.</div>;
};

詳細(xì)解釋:在這個例子中,isEqual 用于深度比較兩個對象 userAuserB 是否相等。它會檢查所有的屬性值是否匹配,包括嵌套的對象。

10. chunk

用途:將數(shù)組分割成指定大小的小數(shù)組。 代碼示例

import React from 'react';
import { chunk } from 'lodash';

const PaginationComponent = ()

 => {
  const data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  const pageSize = 3;
  const pages = chunk(data, pageSize);

  return (
    <div>
      {pages.map((page, index) => (
        <div key={index}>
          Page {index + 1}: {page.join(', ')}
        </div>
      ))}
    </div>
  );
};

詳細(xì)解釋:此代碼示例中使用 chunk 函數(shù)將一個大數(shù)組分割成多個小數(shù)組,每個數(shù)組包含 pageSize 個元素。這種方法非常適合實現(xiàn)分頁邏輯。在此例中,它將一個包含 10 個元素的數(shù)組分割成每個包含 3 個元素的子數(shù)組。

以上就是十個JavaScript lodash中的高頻使用方法整理的詳細(xì)內(nèi)容,更多關(guān)于JavaScript lodash的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 微信小程序?qū)崿F(xiàn)翻牌抽獎動畫

    微信小程序?qū)崿F(xiàn)翻牌抽獎動畫

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)翻牌抽獎動畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • a標(biāo)簽置灰不可點擊的實現(xiàn)方法

    a標(biāo)簽置灰不可點擊的實現(xiàn)方法

    下面小編就為大家?guī)硪黄猘標(biāo)簽置灰不可點擊的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • js中判斷文本框是否為空的兩種方法

    js中判斷文本框是否為空的兩種方法

    js中判斷文本框是否為空的兩種方法,需要的朋友可以參考下。
    2011-07-07
  • 用js讀、寫、刪除Cookie代碼續(xù)篇

    用js讀、寫、刪除Cookie代碼續(xù)篇

    本文是上一篇文章《用js讀、寫、刪除Cookie代碼分享及詳細(xì)注釋說明》發(fā)現(xiàn)了些問題,進行分析解決,推薦給大家
    2014-12-12
  • JavaScript常見的五種數(shù)組去重的方式

    JavaScript常見的五種數(shù)組去重的方式

    本文主要JavaScript常見的五種數(shù)組去重的方式進行一一思路分析實例介紹,易于理解與學(xué)習(xí),具有很好的參考價值,需要的朋友一起來看下吧
    2016-12-12
  • JavaScript ES6 Module模塊詳解

    JavaScript ES6 Module模塊詳解

    這篇文章主要介紹了ES6新特性之模塊Module用法,簡要說明了模塊Module的概念、功能并結(jié)合實例形式分析了模塊Module的使用方法與相關(guān)注意事項,需要的朋友可以參考下
    2021-10-10
  • Openlayers實現(xiàn)距離面積測量

    Openlayers實現(xiàn)距離面積測量

    這篇文章主要為大家詳細(xì)介紹了Openlayers實現(xiàn)距離面積測量,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • JS?可選鏈的三種形勢及好處詳解

    JS?可選鏈的三種形勢及好處詳解

    這篇文章主要為大家介紹了JS?可選鏈的三種形勢及好處詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • javascript replace()用法詳解附實例代碼

    javascript replace()用法詳解附實例代碼

    在javascript中,String的函數(shù)replace()簡直太讓人喜愛了。它靈活而強大的字符替換處理能力,讓我不禁想向大家介紹它。
    2008-10-10
  • js創(chuàng)建子窗口并且回傳值示例代碼

    js創(chuàng)建子窗口并且回傳值示例代碼

    本文為大家詳細(xì)介紹喜愛使用js創(chuàng)建子窗口并且實現(xiàn)回傳值的示例,感興趣的朋友可以參考下哈,希望對大家有所幫助
    2013-07-07

最新評論