站長資訊網
        最全最豐富的資訊網站

        es6中find()怎么用

        在es6中,find()用于通過回調函數查找數組中符合條件的第一個元素的值,語法“array.find(function(…),thisValue)”。find()會為數組中的每個元素都調用一次函數執行,當數組中的元素在測試條件時返回true時,find()返回符合條件的該元素,之后的值不會再調用執行函數;如果沒有符合條件的元素返回undefined。

        es6中find()怎么用

        前端(vue)入門到精通課程:進入學習
        Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調試工具:點擊使用

        本教程操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。

        es6 find()的介紹

        find() 方法返回通過測試(函數內判斷)的數組的第一個元素的值。

        find() 方法為數組中的每個元素都調用一次函數執行:

        • 當數組中的元素在測試條件時返回 true 時, find() 返回符合條件的元素,之后的值不會再調用執行函數。

        • 如果沒有符合條件的元素返回 undefined

        語法:

        array.find(function(currentValue, index, arr),thisValue)
        登錄后復制

        參數 描述
        function(currentValue, index,arr) 必需。數組每個元素需要執行的函數。
        函數參數:參數描述currentValue必需。當前元素index可選。當前元素的索引值arr可選。當前元素所屬的數組對象
        thisValue 可選。 傳遞給函數的值一般用 "this" 值。
        如果這個參數為空, "undefined" 會傳遞給 "this" 值

        返回值:返回符合測試條件的第一個數組元素值,如果沒有符合條件的則返回 undefined。

        注意:

        • find() 對于空數組,函數是不會執行的。

        • find() 并沒有改變數組的原始值。

        基本使用

        Array.prototype.find
        返回第一個滿足條件的數組元素

        const arr = [1, 2, 3, 4, 5]; const item = arr.find(function (item) {   return item > 3; });  console.log(item);//4
        登錄后復制

        如果沒有一個元素滿足條件 返回undefined

        const arr = [1, 2, 3, 4, 5]; const item = arr.find(function (item) {   return item > 5; });  console.log(item); //undefined
        登錄后復制

        返回的元素和數組對應下標的元素是同一個引用

        const arr = [   {     id: 1,     name: '張三',   },   {     id: 2,     name: '李四',   },   {     id: 3,     name: '王五',   }, ];  const item = arr.find((item) => item.name === '李四'); console.log(item);
        登錄后復制

        es6中find()怎么用
        回調函數的返回值是boolean 第一個返回true的對應數組元素作為find的返回值

        const arr = [   {     id: 1,     name: '張三',   },   {     id: 2,     name: '李四',   },   {     id: 3,     name: '王五',   }, ]; const item = arr.find(function (item) {   return item.id > 1; }); console.log(item);
        登錄后復制

        es6中find()怎么用

        回調的參數

        當前遍歷的元素 當前遍歷出的元素對應的下標 當前的數組

        const arr = [   {     id: 1,     name: '張三',   },   {     id: 2,     name: '李四',   },   {     id: 3,     name: '王五',   }, ]; const item = arr.find(function (item, index, arr) {   console.log(item, index, arr); });
        登錄后復制

        es6中find()怎么用

        find的第二個參數

        更改回調函數內部的this指向

        const arr = [   {     id: 1,     name: '張三',   },   {     id: 2,     name: '李四',   },   {     id: 3,     name: '王五',   }, ]; const item = arr.find(   function (item, index, arr) {     console.log(item, index, arr);     console.log(this);   },   { a: 1 } );
        登錄后復制

        es6中find()怎么用
        如果沒有第二個參數
        非嚴格模式下 this -> window

        const arr = [   {     id: 1,     name: '張三',   },   {     id: 2,     name: '李四',   },   {     id: 3,     name: '王五',   }, ]; const item = arr.find(function (item, index, arr) {   console.log(item, index, arr);   console.log(this); });
        登錄后復制

        es6中find()怎么用
        在嚴格模式下
        不傳入第二個參數 this為undefined 與嚴格模式規定相同

        'use strict'; const arr = [   {     id: 1,     name: '張三',   },   {     id: 2,     name: '李四',   },   {     id: 3,     name: '王五',   }, ]; const item = arr.find(function (item, index, arr) {   console.log(item, index, arr);   console.log(this); });
        登錄后復制

        es6中find()怎么用

        稀疏數組find

        find會遍歷稀疏數組的空隙 empty
        具體遍歷出的值 由undefined占位

        const arr = Array(5); arr[0] = 1; arr[2] = 3; arr[4] = 5; const item = arr.find(function (item) {   console.log(item);   return false; });
        登錄后復制

        es6中find()怎么用
        而ES5數組擴展方法forEach,map,filter,reduce,reduceRight,every,some 只會遍歷有值的數組
        find的遍歷效率是低于ES5數組擴展方法的

        find不會更改數組

        雖然新增了元素 但是find會在第一次執行回調函數的時候 拿到這個數組最初的索引范圍

        const arr = [1, 2, 3, 4, 5]; const item = arr.find(function (item) {   arr.push(6);   console.log(item); }); console.log(arr);
        登錄后復制

        es6中find()怎么用

        const arr = [1, 2, 3, 4, 5]; const item = arr.find(function (item) {   arr.splice(1, 1);   console.log(item); }); console.log(arr);
        登錄后復制

        es6中find()怎么用
        splice 刪除對應項 該項位置不保留 在數據最后補上undefined

        const arr = [1, 2, 3, , , , 7, 8, 9]; arr.find(function (item, index) {   if (index === 0) {     arr.splice(1, 1);   }   console.log(item); });
        登錄后復制

        es6中find()怎么用
        delete
        刪除該項的值 并填入undefined

        const arr = [1, 2, 3, , , , 7, 8, 9]; arr.find(function (item, index) {   if (index === 0) {     delete arr[2];   }   console.log(item); });
        登錄后復制

        es6中find()怎么用
        pop
        刪除該項的值 并填入undefined

        const arr = [1, 2, 3, , , , 7, 8, 9]; arr.find(function (item, index) {   if (index === 0) {     arr.pop();   }   console.log(item); });
        登錄后復制

        es6中find()怎么用

        創建myFind

        Array.prototype.myFind = function (cb) {   if (this === null) {     throw new TypeError('"this" is null');   }   if (typeof cb !== 'function') {     throw new TypeError('Callback must be a function type');   }   var obj = Object(this),     len = obj.length >>> 0,     arg2 = arguments[1],     step = 0;   while (step < len) {     var value = obj[step];     if (cb.apply(arg2, [value, step, obj])) {       return value;     }   }   step++;   return undefined; };
        登錄后復制

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 精品亚洲综合久久中文字幕| 精品亚洲一区二区三区在线播放| 8050免费午夜一级国产精品| 精品国产_亚洲人成在线高清| 久久中文精品无码中文字幕| 一本色道久久88精品综合| 亚洲AV永久无码精品| 久久成人精品| 四虎影视884a精品国产四虎| 国产精品亚洲欧美大片在线看| 合区精品中文字幕| 精品人妻中文字幕有码在线| www.亚洲精品.com| 国产高清在线精品一区小说| 亚洲国产精品视频| 国产一区二区三区精品视频| 亚洲av无码精品网站| 人妻一区二区三区无码精品一区| 欧洲精品色在线观看| 99久久精品免费观看国产| 中文字幕九七精品乱码| 久久精品国内一区二区三区| 久久久WWW成人免费精品| 99亚洲精品视频| 日本精品中文字幕| 国产亚洲福利精品一区| 日韩三级精品| 精品久久久久久亚洲| 国产精品三级国产电影| 久久人人爽人人精品视频| wwwvr高清亚洲精品二区| 97精品国产高清自在线看超| 国产成人精品日本亚洲专区| 日韩精品一区二区三区四区| 亚洲精品福利视频| 成人精品一区二区三区| 国产精品无码久久综合网| 国产三级国产精品国产普男人| 精品一区二区三区四区在线| 女人高潮内射99精品| 亚洲?V乱码久久精品蜜桃|