成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

十個可以手動編寫的 JavaScript 數組 API

開發 前端
JavaScript 中有很多API,使用得當,會很方便,省力不少。 你知道它的原理嗎? 今天這篇文章,我們將對它們進行一次小總結。

JavaScript 中有很多API,使用得當,會很方便,省力不少。 你知道它的原理嗎? 今天這篇文章,我們將對它們進行一次小總結。

現在開始吧。

1.forEach()

forEach()用于遍歷數組接收一參數回調函數,并在回調函數中接收三個參數,分別代表每一項的值、下標和數組本身。

為了確保數組可以訪問我們自己手寫的API,它必須鏈接到數組的原型。

代碼:

const arr = [ { name: 'zt', age: 18 }, { name: 'aa', age: 19 }, { name: 'bb', 
age: 18 }, { name: 'cc', age: 21 },]//CodeArray.prototype.my_forEach = function 
(callback) { for (let i = 0; i < this. length; i++) { callback(this[i], i, 
this) }}//verifyarr.my_forEach((item, index, arr) => { //111 111 if (item. 
age === 18) { item.age = 17 return } console.log('111');})

2. map()

map()也用于數組遍歷,與forEach不同的是,它會返回一個新數組,這個新數組由回調函數map返回值接收。

代碼:

const arr = [ { name: 'zt', age: 18 }, { name: 'aa', age: 19 }, { name: 'bb', 
age: 18 }, { name: 'cc', age: 21 },]Array.prototype.my_map=function(callback){ 
const res=[] for(let i=0;i{ if(item.age>18){ return item }})console. 
log(newarr);//[ // undefined, // { name: 'aa', age: 19 }, // undefined, // { 
name: 'cc', age: 21 }//]

3. filter()

filter()用于過濾滿足條件的元素,并返回一個新數組。

代碼:

const arr = [ { name: 'zt', age: 18 }, { name: 'aa', age: 19 }, { name: 'bb', 
age: 18 }, { name: 'cc', age: 21 },]Array.prototype.my_filter = function 
(callback) { const res = [] for (let i = 0; i < this. length; i++) { 
callback(this[i], i, this) && res. push(this[i]) } return 
res}//verifylet newarr = arr.my_filter((item, index, arr) => { return item. 
age > 18})console.log(newarr); [ { name: 'aa', age: 19 }, { name: 'cc', age: 
21 } ]

4. reduce()

reduce()用于將數組中的所有元素按照指定的規則進行合并計算,并返回一個最終值。

reduce() 接收兩個參數:回調函數、初始值(可選)。

回調函數中接收有四個參數:初始值或者存放最后一個回調函數的返回值、每一項的值、下標、數組本身。

如果沒有提供初始值,則從第二項開始,將第一個值作為第一次執行的返回值。

代碼:

const arr = [ { name: 'zt', age: 18 }, { name: 'aa', age: 19 }, { name: 'bb', 
age: 18 }, { name: 'cc', age: 21 },]Array.prototype.my_reduce = function 
(callback,...arg) { let pre,start=0 if(arg.length){ pre=arg[0] } else{ 
pre=this[0] start=1 } for (let i = start; i < this.length; i++) { 
pre=callback(pre,this[i], i, this) } return pre}//verifyconst sum = 
arr.my_reduce((pre, current, index, arr) => { return pre+=current.age},0) 
console.log(sum); //76

5. fill()

fill() 用于填充數組的所有元素,它會影響原始數組,返回原始數組的修改值。

fill() 接收三個參數:填充值、起始位置(默認為 0)、結束位置(默認為 this.length-1)。

左閉右開灌裝原理

當使用起始位置和結束位置時,它們默認填充整個數組。

代碼:

Array.prototype.my_fill = function (value,start,end) { 
if(!start&&start!==0){ start=0 } end=end||this.length for(let 
i=start;i ]6. 
includes()

想法:

include()用于判斷數組中是否存在元素,返回值true或false

include() 提供第二個參數支持指定位置開始查找

代碼:

const arr = ['a', 'b', 'c', 'd', 'e']Array.prototype.my_includes = function 
(item,start) { if(start<0){start+=this.length} for (let i = start; i < 
this. length; i++) { if(this[i]===item){ return true } } return 
false}//verifyconst flag = arr.my_includes('c',3) //The element to be searched, 
from which subscript to start searchingconsole.log(flag); //false

6. join()

join() 用于將數組中的所有元素連接成指定符號的一個字符串

代碼:

const arr = ['a', 'b', 'c']Array.prototype.my_join = function (s = ',') { let 
str = '' for (let i = 0; i < this. length; i++) { str += `${this[i]}${s}` } 
return str. slice(0, str. length - 1)}//verifyconst str = arr. my_join(' 
')console.log(str); //a b c

7. find()

find()用于返回數組中第一個滿足條件的元素,找不到元素返回undefined。

find()的參數是一個回調函數。

代碼:

const arr = [ { name: 'zt', age: 18 }, { name: 'aa', age: 19 }, { name: 'bb', 
age: 18 }, { name: 'cc', age: 21 },]Array.prototype.my_find = function 
(callback) { for (let i = 0; i < this.length; i++) { if(callback(this[i], i, 
this)){ return this[i] } } return undefined}//verifylet j = arr.my_find((item, 
index, arr) => { return item.age > 19 })console.log(j); //{ name: 'cc', 
age: 21 }

8. findIndex()

findIndex()用于返回數組中第一個滿足條件的,索引找不到返回-1

findIndex()的參數是一個回調函數。

代碼:

const arr = [ { name: 'zt', age: 18 }, { name: 'aa', age: 19 }, { name: 'bb', 
age: 18 }, { name: 'cc', age: 21 },]Array.prototype.my_findIndex = function 
(callback) { for (let i = 0; i < this.length; i++) { if(callback(this[i], i, 
this)){ return i } } return -1}let j = arr.my_findIndex((item, index, arr) => 
{ return item.age > 19})console.log(j); //3

9. some()

元素 some() 用于檢查數組中指定的條件是否滿足。

如果有一個元素滿足條件,則返回 true,并且不會再檢查后面的元素。

代碼:

const arr = [ { name: 'zt', age: 18 }, { name: 'aa', age: 19 }, { name: 'bb', 
age: 18 }, { name: 'cc', age: 21 },]Array.prototype.my_some = function 
(callback) { for (let i = 0; i < this. length; i++) { if(callback(this[i], i, 
this)){ return true } } return false}//verifyconst flag = arr.some((item, index, 
arr) => { return item. age > 20})console.log(flag); //true

10. every()

every() 用于檢查所有元素是否都滿足指定條件。

如果有一個條件不滿足,則返回 false,后面的元素不會再執行。

代碼:

const arr = [ { name: 'zt', age: 18 }, { name: 'aa', age: 19 }, { name: 'bb', 
age: 18 }, { name: 'cc', age: 21 },]Array.prototype.my_every = function 
(callback) { for (let i = 0; i < this.length; i++) { if(!callback(this[i], i, 
this)){ return false } } return true}//verifyconst flag = arr.my_every((item, 
index, arr) => { return item.age > 16})console.log(flag); //true

寫在最后

以上就是我今天想與您分享的10個手動編寫的JS數組API的知識內容,如果對您有幫助的話,請記得點贊我,關注我,并將這個知識分享給您的朋友,也許能夠幫助到他。

責任編輯:華軒 來源: web前端開發
相關推薦

2022-08-28 19:03:18

JavaScript編程語言開發

2017-03-06 13:20:31

2022-11-25 14:55:43

JavaScriptweb應用程序

2023-10-16 07:55:15

JavaScript對象技巧

2022-09-27 14:36:57

JavaScrip數組開發

2022-05-04 20:51:28

API設計高性能

2023-09-06 07:22:48

控制臺UI工具

2024-03-04 16:32:02

JavaScript運算符

2025-06-11 08:10:00

JavaScripAPI代碼

2023-04-17 16:19:32

編程語言JavaScript開發

2023-07-24 07:11:43

2023-02-09 16:15:27

JavaScript編程語言字符串

2023-12-06 07:13:16

RESTAPI客戶端

2023-06-14 15:51:48

JavaScript

2024-12-02 14:28:17

JavaScriptWeb開發

2022-07-07 09:19:24

JavaScript代碼樣式規則

2009-09-03 10:08:27

JavaScript自

2022-06-08 10:42:34

ReduceJavaScript技巧

2022-07-01 10:34:03

JavaScript代碼前端

2017-04-13 11:45:56

報表大數據應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一级片在线播放 | 久久久久久av | 波多野结衣av中文字幕 | 欧美一区二区三区在线看 | 欧美一级在线 | 欧美一级片在线看 | 中文字幕免费视频 | 日韩欧美精品 | 午夜在线视频一区二区三区 | 中文字幕在线视频网站 | 污污的网站在线观看 | 国产一级一片免费播放 | 青青久草 | 久久久久9999亚洲精品 | 亚洲欧美在线观看 | 成人精品鲁一区一区二区 | 91麻豆精品国产91久久久久久 | 一区二区在线不卡 | 国产成人免费视频网站高清观看视频 | 99久久精品免费视频 | 国产精品一区在线观看你懂的 | 亚洲福利一区 | 日韩欧美国产一区二区三区 | 亚洲视频网 | 国产精品福利视频 | 99久9| 81精品国产乱码久久久久久 | 欧美激情一区二区三级高清视频 | 亚洲精品久久 | av中文字幕在线播放 | 天天爽网站 | 国产精品视频网站 | 欧美久久综合 | av中文在线 | 国产色片 | 日日干天天操 | 国产免费拔擦拔擦8x高清 | 国内精品在线视频 | 亚洲一区免费 | 欧美精品成人 | 久久久久久久久久一区二区 |