常使用到的JS方法

来源:https://www.cnblogs.com/kinan/archive/2022/03/18/16021814.html
-Advertisement-
Play Games

描述: 本篇文章為了記錄日常生活中或者項目中經常使用到的JS方法,會長期記錄... 數組中的方法 1.map和forEach方法 map 參數為回調函數,得到一個新數組 forEach 修改原數組,不會產生新數組 2.pop和push方法(棧結構) push 向數組末尾添加一個元素或者多個元素,會改 ...


描述: 本篇文章为了记录日常生活中或者项目中经常使用到的JS方法,会长期记录...

数组中的方法

1.map和forEach方法

  • map
    参数为回调函数,得到一个新数组
  • forEach
    修改原数组,不会产生新数组

2.pop和push方法(栈结构)

  • push
    向数组末尾添加一个元素或者多个元素,会改变原数组
  • pop
    从数组尾部删除一个元素,会返回被删除的元素,原数组被修改

3.shift和unshift方法(队列结构)

  • shift
    删除数组的一个元素,并且会返回删除元素,改变原数组
  • unshift
    从数组起始位置开始添加元素,返回数组长度,修改原数组

4.concat方法
链接多个数组,产生新数组,不影响原数组(注意:如果数组不是基础数据,含有复杂类型数据,该方法为浅拷贝,会影响原数组)

/* 基础数据 */
const arr = [1,2,3]
const arr1 = [1,2,3].concat(arr1) //[1, 2, 3, 1, 2, 3]

/* 复杂数据 */
const arr3 = [1,2,{name:'zz',age:12}]
const arr4 = [1,3,4].concat(arr3) //[1,2,{name:'zz',age:12},1,3,4]
arr4[4].age = 99 // 此时arr3的数据也修改了 

5.filter方法
过滤数据,传入一个回调函数,方法返回一个符合回调函数条件的新数组,不会修改原数组

const arr = [1,2,4,6,8]
arr.filter((item,index) => item === 2**index) // [1, 2, 4] 此处**为es7新语法 幂运算

6.sort和reverse方法

  • sort
    该方法可以对数组进行升序或降序排列,默认为按字母升序排列,如果是数组,需要通过函数指定排序方式。该会改变原数组,不会产生新数组
const sortArr = [1,2,3,0,-1,-4]
sortArr.sort((a,b) => {return a-b}) //升序排列 [-4, -1, 0, 1, 2, 3]
sortArr.sort((a,b) => {return b-a}) //降序排列 [3, 2, 1, 0, -1, -4]
  • reverse
    数组反转,前后颠倒顺序,不会产生新数组,原数组会改变

7.splice和slice方法

  • splice
    splice(start,count,item...) 删除数组中的数据或者为数组添加数据,第一个参数为起始位置,第二个为删除位数,后面的item参数为替换数据.当删除个数为0时,数组会从起始位置插入item数据,会改变原数组,返回删除的数据
const arr = [1,2,3,4]
arr.splice(0,1,'string') // 返回 1 arr变为 ['string',2,3,4]

arr.splice(1,0,'string2') // 返回[] arr变为['string','string2',3,4]
  • slice
    slice(start,end)方法对数组进行从起始位置到结束位置的部分截取,也可以截取字符串,会返回一个新数组,不会改变原数组
const arr = [1,2,3,4,5]
arr.slice(0,3) // 返回[1,2,3] arr未改变

8.join方法
将数组中的项通过指定方式生成一个字符串,不改变原数组,生成新的字符串

9.reduce方法
reduce(callback(),[initialValue]) 该方法第一个参数是回调函数,函数有四个参数、preValue - 前一个数据或者初始值,curValue - 当前数据,index - 当前数据坐标,arr - 当前操作的数组。高级用法:数组去重、计算元素出现的次数、将多维数组扁平化、数组对象归类

// 1.数组去重
const arr = [1,2,4,2,5,22,77,33,4,2,1]
const a = arr.reduce((pre,cur,index) => {
  return pre.includes(cur)?pre:[...pre,cur]
},[])

// 2.数组对象中属性值相同的项归类在一起
const arr4 = [
  {
    county:'1-1',
    child:[{name:'张三',age:12},{name:'李斯',age:12}]
  },
  {
    county:'1-2',
    child:[{name:'张三',age:12},{name:'李斯',age:12}]
  },
  {
    county:'1-1',
    child:[{name:'王五',age:33},{name:'麻子',age:21}]
  }
]

const arr5 = arr4.reduce((pre,cur,item)=>{
  if(!pre[cur.county]){
    pre[cur.county] = []
  }
  for(let i = 0;i<cur.child.length;i++){
    pre[cur.county].push(cur.child[i])
  }
  return pre
},{})

console.log(arr5)
/*
结果为:
 {
  '1-1': [
    { name: '张三', age: 12 },
    { name: '李斯', age: 12 },
    { name: '王五', age: 33 },
    { name: '麻子', age: 21 }
  ],
  '1-2': [ { name: '张三', age: 12 }, { name: '李斯', age: 12 } ]
}*/

本文来自博客园,作者:竺墨,转载请注明原文链接:https://www.cnblogs.com/kinan/p/16021814.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 作用:創建一個ref對象,其value值指向另外一個對象中的某個屬性。這樣在模板中就可以直接使用屬性名而不用麻煩的再加對象名首碼了。 語法: const name = toRef(person,'name') 應用:要將響應式對象中的某個屬性單獨提供給外部使用時。 擴展:toRefs與toRef功能 ...
  • 在一些內部OA或者流轉的文件,或者給一些客戶的報價文件、合同,或者一些醫院出示的給保險機構的病歷資料等,有時候可能都希望快速的使用電子簽章的處理方式來給文件蓋上特定的印章,本篇隨筆介紹基於Vue&Element的前端項目採用第三方組件vue-drag-resize和圖片轉換Base64的方式實現圖片... ...
  • 基於級聯變數的CSS自定義屬性,已經出來很多年了。 雖然有less、sass等預處理器大行其道,但是自定義屬性也有它的特點和用處,諸如在js中讀寫、作用域設置等等,在處理UI主題切換等功能上也發揮著很大的作用。 自定義屬性 CSS自定義屬性(Custom Properties),在一個css選擇器內 ...
  • 經過前面三天的學習,Node.js的基礎知識已逐漸掌握,今天繼續學習緩存區和文件操作,並稍加整理加以分享,如有不足之處,還請指正。 ...
  • 前言 在 《一篇帶你用 VuePress + Github Pages 搭建博客》中,我們使用 VuePress 搭建了一個博客,最終的效果查看:TypeScript 中文文檔。 本篇講講 SEO 優化中的 Open Graph protocol。 meta 標簽 如果我們打開思否任意一篇文章,比如 ...
  • 語義化是指使用恰當語義的html標簽,讓頁面具有良好的結構和含義。 比如p標簽就代表段落;article代表正文內容等。 語義化的好處有以下兩點: 開發者友好:使用語義類標簽增強了可讀性,開發者也能夠清晰地看出網頁的結構,也更為便於團隊的開發和維護; 機器友好:帶有語義的文字表現力豐富,更適合搜索引 ...
  • 本人是重度書簽使用者,多年收藏積累的書簽有4萬多。 雖然我對書簽的文件夾進行了結構化的整理,但是每當添加新的書簽時候,還是很難快速的找到相關的文件夾。 因此開發這個小插件可以快速的對書簽進行添加和整理。 ...
  • 開源項目其實有一個成熟周期,這個周期大概是三年左右,自React框架在2013年發佈並引爆了前端框架的大潮,這個屬於前端的周期就此開始了。之後在2015年5月開源的React Native又開啟了屬於Web移動前端的周期,15-16年,18-19年,21-22年正好就是屬於移動前端的三個爆發點。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...