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

JavaScript手寫源碼之omit函數(shù)的實現(xiàn)

 更新時間:2023年02月09日 10:02:05   作者:mick  
最近突然有個新的想法,想去看看前端的小庫來提升自己的編碼能力。但是又不知道怎么去證明自己是否真的看懂了,那就實現(xiàn)一個omit函數(shù)吧

最近突然有個新的想法,想去看看前端的小庫來提升自己的編碼能力。但是又不知道怎么去證明自己是否真的看懂了,那就實現(xiàn)一個mini的吧。

添加測試文件

我們通過vitest來實現(xiàn)測試的功能。

pnpm add -D vitest

然后再package.json文件中添加我們的執(zhí)行腳本

 "scripts": {
    "test": "vitest"
  }

接著我們就可以編寫測試文件了

import { describe, expect, test } from "vitest"
import { myOmit } from "."

describe("omit", () => {
  test("should create a shallow copy", () => {
    const mick = { name: "mick" }
    const copy = myOmit(mick, [])
    expect(copy).toEqual({ name: "mick" })
  })

  test("should drop fields which are passed in ", () => {
    const mick = { name: "mick", age: 18 }

    const copy = myOmit(mick, ["age"])

    expect(copy).toEqual({ name: "mick" })
    expect(mick).toEqual({ name: "mick", age: 18 })
    expect(myOmit(mick, ["name", "age"])).toEqual({})
  })
})

實現(xiàn)omit函數(shù)

我們要做的肯定是是要將測試文件通過。如果測試通過了,那就說明我們的功能基本上是已經(jīng)實現(xiàn)了,剩下的是代碼重構(gòu)了。

根據(jù)測試文件我們可以看到,提出對象中的屬性生成一個新的對象,但是原對象是不發(fā)生改變的。那可以用Object.assign,下面介紹一個Object.assign

Object.assign() 方法將所有可枚舉(Object.propertyIsEnumerable() 返回 true)和自有(Object.hasOwnProperty() 返回 true)屬性從一個或多個源對象復(fù)制到目標對象,返回修改后的對象。

我們首先利用Object.assign將原對象復(fù)制一份,然后遍歷復(fù)制過后的對象將需要剔除的屬性刪除即可。

export function myOmit(value, args) {
  const shallowCopy = Object.assign({}, value)

  for (let i = 0; i < args.length; i++) {
    const key = args[i]
    if (key in shallowCopy) {
      delete shallowCopy[key]
    }
  }

  return shallowCopy
}

執(zhí)行測試文件

到此這篇關(guān)于JavaScript手寫源碼之omit函數(shù)的實現(xiàn)的文章就介紹到這了,更多相關(guān)JavaScript omit函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • Array的push與unshift方法性能比較分析

    Array的push與unshift方法性能比較分析

    Array的push與unshift方法都能給當前數(shù)組添加元素,不同的是,push是在末尾添加,而unshift則是在開頭添加。
    2011-03-03
  • JavaScript防抖案例講解

    JavaScript防抖案例講解

    這篇文章主要介紹了JavaScript防抖案例講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • javascript 精確獲取樣式屬性(上)

    javascript 精確獲取樣式屬性(上)

    設(shè)置與獲取樣式屬性是UI控件與特效庫非常關(guān)鍵的部分,設(shè)置樣式我們基本可以用cssText來包打天下,但獲取樣式就不是這回事了。
    2010-01-01
  • 最新評論

    无极县| 邹城市| 高要市| 舒城县| 北辰区| 灵丘县| 闽清县| 锡林郭勒盟| 芮城县| 津市市| 正镶白旗| 罗源县| 开平市| 沁水县| 内江市| 商城县| 通渭县| 保靖县| 黄骅市| 阳谷县| 礼泉县| 北京市| 会昌县| 沅陵县| 台前县| 孝义市| 霍州市| 康马县| 广河县| 巴中市| 宁都县| 都昌县| 稷山县| 剑川县| 商河县| 石屏县| 西畴县| 金华市| 体育| 青神县| 五原县|