精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

JavaScript 新功能:findLast() 和 findLastIndex()

開發 前端
Wenlu Wang 和 Daniel Rosenwasser 關于findLast() 和 findLastIndex() 的 ECMAScript 提案解決了這一問題。

今天來看一個 ECMAScript 提案:findLast() 和 findLastIndex()。

提案原因

在 JavaScript 中,可以通過 find() 和 findIndex() 查找數組中的值。不過,這些方法從數組的開始進行遍歷:

const array = [{v: 1}, {v: 2}, {v: 3}, {v: 4}, {v: 5}];

array.find(elem => elem.v > 3); // {v: 4}
array.findIndex(elem => elem.v > 3); // 3

如果要從數組的末尾開始遍歷,就必須反轉數組并使用上述方法。這樣做就需要一個額外的數組操作。

基本使用

幸運的是,Wenlu Wang 和 Daniel Rosenwasser 關于findLast() 和 findLastIndex() 的 ECMAScript 提案解決了這一問題。該提案的一個重要原因就是:語義。

它們的用法和find()、findIndex()類似,只不過是從后向前遍歷數組,這兩個方法適用于數組和類數組。

  • findLast() 會返回第一個查找到的元素,如果沒有找到,就會返回 undefined;
  • findLastIndex() 會返回第一個查找到的元素的索引。如果沒有找到,就會返回 -1;
const array = [{v: 1}, {v: 2}, {v: 3}, {v: 4}, {v: 5}];

array.findLast(elem => elem.v > 3); // {v: 5}
array.findLastIndex(elem => elem.v > 3); // 4
array.findLastIndex(elem => elem.v > 5); // -1

簡單實現

下面來簡單實現一下這兩個方法。

  • findLast()
function findLast(arr, callback, thisArg) {
for (let index = arr.length - 1; index >= 0; index--) {
const value = arr[index];
if (callback.call(thisArg, value, index, arr)) {
return value;
}
}
return undefined;
}

const array = [{v: 1}, {v: 2}, {v: 3}, {v: 4}, {v: 5}];
findLast(array, elem => elem.v > 3, array) // {v: 5}
findLast(array, elem => elem.v > 5, array) // -1
  • findLastIndex()
function findLastIndex(arr, callback, thisArg) {
for (let index = arr.length - 1; index >= 0; index--) {
const value = arr[index];
if (callback.call(thisArg, value, index, arr)) {
return index;
}
}
return -1;
}

const array = [{v: 1}, {v: 2}, {v: 3}, {v: 4}, {v: 5}];
findLastIndex(array, elem => elem.v > 3, array) // 4
findLastIndex(array, elem => elem.v > 5, array) // -1

lodash源碼

下面是 lodash 實現這兩個方法的源碼,供大家學習!

  • findLast()
import findLastIndex from './findLastIndex.js'
import isArrayLike from './isArrayLike.js'

/**
* This method is like `find` except that it iterates over elements of
* `collection` from right to left.
*
* @since 2.0.0
* @category Collection
* @param {Array|Object} collection The collection to inspect.
* @param {Function} predicate The function invoked per iteration.
* @param {number} [fromIndex=collection.length-1] The index to search from.
* @returns {*} Returns the matched element, else `undefined`.
* @see find, findIndex, findKey, findLastIndex, findLastKey
* @example
*
* findLast([1, 2, 3, 4], n => n % 2 == 1)
* // => 3
*/
function findLast(collection, predicate, fromIndex) {
let iteratee
const iterable = Object(collection)
if (!isArrayLike(collection)) {
collection = Object.keys(collection)
iteratee = predicate
predicate = (key) => iteratee(iterable[key], key, iterable)
}
const index = findLastIndex(collection, predicate, fromIndex)
return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined
}

export default findLast
  • findLastIndex()
import baseFindIndex from './.internal/baseFindIndex.js'
import toInteger from './toInteger.js'

/**
* This method is like `findIndex` except that it iterates over elements
* of `collection` from right to left.
*
* @since 2.0.0
* @category Array
* @param {Array} array The array to inspect.
* @param {Function} predicate The function invoked per iteration.
* @param {number} [fromIndex=array.length-1] The index to search from.
* @returns {number} Returns the index of the found element, else `-1`.
* @see find, findIndex, findKey, findLast, findLastKey
* @example
*
* const users = [
* { 'user': 'barney', 'active': true },
* { 'user': 'fred', 'active': false },
* { 'user': 'pebbles', 'active': false }
* ]
*
* findLastIndex(users, ({ user }) => user == 'pebbles')
* // => 2
*/
function findLastIndex(array, predicate, fromIndex) {
const length = array == null ? 0 : array.length
if (!length) {
return -1
}
let index = length - 1
if (fromIndex !== undefined) {
index = toInteger(fromIndex)
index = fromIndex < 0
? Math.max(length + index, 0)
: Math.min(index, length - 1)
}
return baseFindIndex(array, predicate, index, true)
}

export default findLastIndex

可用性

該提案目前處于第 3 階段,提案地址:https://github.com/tc39/proposal-array-find-from-last

此外,Lodash 和 Ramda 等庫為數組提供了findLast() 和 findLastIndex() 操作。

目前,在 Safari 15.4 中已經支持了這兩個方法。期待更多瀏覽器支持這兩個方法!

責任編輯:武曉燕 來源: 前端充電寶
相關推薦

2024-10-21 09:07:52

2024-03-11 14:34:04

JavaScript開發

2023-10-29 00:56:45

MySQL開發者JSON

2011-07-28 14:06:52

XCode XCode 3.2

2022-04-16 12:21:59

XubuntuLinux

2022-04-17 18:55:44

KubuntuLinux 發行版Ubuntu

2014-12-19 09:53:25

Android 5.1

2023-04-05 19:27:05

Debian

2023-04-17 07:32:01

軟件包OpenBSD

2009-06-19 12:53:56

Spring 2.0

2018-01-02 09:06:10

2022-03-01 09:08:35

Fedora 36GNOMEKDE 流派

2022-04-25 10:34:16

UbuntuLinux 內核穩定版本

2022-04-22 08:48:51

AQE流控架構

2022-07-28 14:50:04

iOS蘋果功能

2022-04-25 11:16:24

UbuntuLinux

2021-11-26 15:27:23

MetaWorkplaceTeams

2012-09-13 11:08:53

IBMdw

2012-06-15 14:27:08

Opera 12 新功能

2012-07-20 10:21:13

Ubuntu開源
點贊
收藏

51CTO技術棧公眾號

日本女人黄色片| 日本视频精品一区| 亚洲精品午夜久久久久久久| 偷窥自拍亚洲色图精选| 在线一区二区三区四区五区| 中国成人亚色综合网站| 亚洲日本国产精品| 久久99在线观看| 97视频在线免费观看| 俄罗斯毛片基地| 97青娱国产盛宴精品视频| 91国产免费看| 免费不卡av在线| 午夜免费播放观看在线视频| 成人高清视频在线| 国产欧美日韩免费看aⅴ视频| 国产极品在线播放| 99久久久久国产精品| 日韩久久免费视频| 亚洲成人激情小说| 国产成人精品一区二区三区视频| 五月激情综合网| 国产av不卡一区二区| 久草福利在线视频| a亚洲天堂av| 亚洲专区国产精品| 在线免费观看视频网站| 久久精品五月| 国模视频一区二区三区| 乱h高h女3p含苞待放| 欧美综合一区| 亚洲精品色婷婷福利天堂| 中文字幕av一区二区三区人妻少妇| 午夜精品成人av| 狠狠色狠色综合曰曰| 天堂8在线天堂资源bt| 成码无人av片在线观看网站| 国产婷婷一区二区| 蜜桃av噜噜一区二区三| 丰满人妻一区二区三区四区53| 精品一区二区三区日韩| 国产精品久久不能| 免费污污视频在线观看| 午夜一级久久| 欧美性资源免费| 午夜影院在线看| 亚洲精品九九| 性欧美长视频免费观看不卡| 久久精品无码人妻| 亚洲激情亚洲| 午夜影院久久久| 日韩视频在线观看视频| 8888四色奇米在线观看| 国产亚洲精久久久久久| 欧美一区二区视频17c| 婷婷开心激情网| av资源站一区| 精品毛片久久久久久| 日本波多野结衣在线| 成+人+亚洲+综合天堂| 国产伦精品一区二区三| 天天摸夜夜添狠狠添婷婷| aaa欧美色吧激情视频| 精品欧美一区二区三区久久久| 日本成人动漫在线观看| 99亚偷拍自图区亚洲| 欧美不卡三区| 91社区在线高清| 亚洲欧洲日产国码二区| 国产精品一区在线免费观看| av色综合久久天堂av色综合在| 夜夜嗨av一区二区三区四季av| 菠萝蜜视频在线观看入口| 日本电影在线观看| 欧美日韩综合视频| 日批视频在线免费看| 日韩高清不卡| 欧美一级艳片视频免费观看| ass极品水嫩小美女ass| 欧美重口另类| 色先锋资源久久综合5566| 国产白丝一区二区三区 | 8v天堂国产在线一区二区| 中文字幕线观看| 6080亚洲理论片在线观看| 亚洲国产一区自拍| 日韩精品久久久久久久的张开腿让| 重囗味另类老妇506070| 91极品女神在线| 中文字幕第三页| 国产成人精品综合在线观看| 欧美激情视频一区二区三区| 日韩伦理在线电影| 亚洲一区二区三区在线看 | 久久97超碰色| 国产亚洲欧美一区二区| 国产日韩精品在线看| 亚洲欧美电影一区二区| 九九九九免费视频| 精品入口麻豆88视频| 日韩麻豆第一页| 一区视频免费观看| 久久三级福利| 成人午夜电影在线播放| eeuss影院在线观看| 亚洲国产cao| 亚洲天堂伊人网| 蜜桃一区二区三区| 欧美丰满少妇xxxxx做受| 懂色av蜜臀av粉嫩av喷吹 | 精品无人区无码乱码毛片国产| 羞羞色午夜精品一区二区三区| 2019中文字幕全在线观看| 国产精品一区二区人人爽| 久久久美女艺术照精彩视频福利播放| 精品无码av无码免费专区| 成人日韩在线| 日韩成人av在线| 欧美人妻一区二区| 免费成人美女在线观看.| 久久精品国产美女| 爱情岛论坛亚洲品质自拍视频网站| 欧美三级韩国三级日本一级| 女人被狂躁c到高潮| 欧美91福利在线观看| 国产区亚洲区欧美区| 牛牛澡牛牛爽一区二区| 亚洲国产日日夜夜| 欧美日韩一区二区区| 久久中文字幕av一区二区不卡| 国产成人亚洲精品| 欧美一区二区少妇| 欧美日韩综合视频网址| 亚洲永久无码7777kkk| 国内精品美女在线观看| 亚洲一区亚洲二区| 麻豆传媒视频在线观看免费| 欧美三级日本三级少妇99| 蜜桃av乱码一区二区三区| 亚洲一区不卡| 免费日韩av电影| 亚洲十八**毛片| 亚洲精品久久久一区二区三区| 久久久久成人片免费观看蜜芽| 国产精品一二三在| 国产911在线观看| 9l亚洲国产成人精品一区二三 | 亚洲黄色www网站| 日本在线视频免费| av成人老司机| 黄色一级视频片| 亚洲成aⅴ人片久久青草影院| 38少妇精品导航| 色在线免费视频| 日本精品视频一区二区| 国内精品卡一卡二卡三| 日韩成人一级大片| 一区二区三区av| www999久久| 久久91精品国产91久久久| 午夜老司机福利| 午夜精品福利视频网站| 成人影视免费观看| 日韩成人av影视| 中日韩在线视频| 亚洲国产中文在线二区三区免| 久久不射热爱视频精品| 免费看av毛片| 色哟哟一区二区三区| 懂色av粉嫩av浪潮av| 激情深爱一区二区| 日本阿v视频在线观看| 色婷婷久久久| 国产日韩精品综合网站| 欧美黄色视屏| 国产亚洲精品久久久| 国产婷婷在线视频| 天天免费综合色| 日韩不卡av在线| 国产aⅴ精品一区二区三区色成熟| 成人免费性视频| 国产一区二区三区不卡视频网站| 国产免费一区视频观看免费| 亚洲卡一卡二| 精品在线小视频| 亚洲资源在线播放| 午夜精品久久久久久久久久久 | 亚洲1区2区3区视频| 国产美女免费无遮挡| 韩国三级电影一区二区| 欧美三级一级片| 91精品一区国产高清在线gif| 国内精品久久国产| 亚瑟国产精品| 欧美在线国产精品| 黄色成人在线| 亚洲图片制服诱惑| 成人爽a毛片一区二区| 欧洲视频一区二区| 日本一区二区欧美| 国产精品乱码一区二区三区软件 | 国产熟女精品视频| 欧美日韩一区免费| 欧美国产在线看| 欧美高清在线精品一区| 制服丝袜在线第一页| 免费在线看成人av| 国产成人黄色片| 午夜久久一区| 一区二区三区我不卡| 免费观看不卡av| 精品久久蜜桃| 欧一区二区三区| 国产精品一区二区性色av| 特黄毛片在线观看| 久久久久久成人精品| 欧美69xxx| 正在播放欧美一区| 神马久久精品| 亚洲第一黄色网| 国产99对白在线播放| 欧美日韩在线一区二区| 中文字字幕在线中文| 亚洲高清免费观看| 69av.com| 亚洲精品精品亚洲| 女人18毛片毛片毛片毛片区二| 国产亚洲一区二区三区四区| 五十路六十路七十路熟婆| 国产成人在线观看免费网站| 亚洲第一天堂久久| 免费人成精品欧美精品 | 国产精品888| 男人添女人下面免费视频| 天堂一区二区在线| 99久久久无码国产精品6| 亚洲毛片播放| 成年人网站免费视频| 亚洲第一黄色| 国产a级片网站| 亚洲大胆在线| 久久久久久久久久网| 国精品一区二区三区| 精品国偷自产一区二区三区| 国产精品99一区二区| 在线观看18视频网站| 午夜国产一区| 97中文字幕在线| 亚洲婷婷在线| 一女被多男玩喷潮视频| 一本色道久久精品| 男人揉女人奶房视频60分| 久久精品国产清高在天天线| 国产欧美高清在线| 日韩精品电影一区亚洲| 性欧美极品xxxx欧美一区二区| 日本欧美在线看| 中国黄色片一级| 国产成人精品免费视频网站| 成年人看片网站| 99久久久免费精品国产一区二区| 51调教丨国产调教视频| 国产偷国产偷亚洲高清人白洁| 国产一区二区三区精品在线| 国产精品国产三级国产有无不卡| 久久爱一区二区| 亚洲最快最全在线视频| 黄色一级片免费在线观看| 在线观看91视频| 国产sm主人调教女m视频| 精品不卡在线视频| 青青青草原在线| 最近更新的2019中文字幕| 视频在线这里都是精品| 97久久精品在线| 国产美女久久| 懂色一区二区三区av片| 女人av一区| 黄色小视频大全| 国产一区成人| 日韩av一卡二卡三卡| 成人黄色小视频在线观看| 国产美女免费网站| 亚洲精品视频免费观看| 久久久久久久久久久久久av| 欧美日韩成人综合| 亚洲av成人精品日韩在线播放| 永久免费看mv网站入口亚洲| 欧美videossex另类| 日本久久中文字幕| 日本在线一区二区三区| 欧美视频1区| 狠狠入ady亚洲精品| 18禁男女爽爽爽午夜网站免费| 精品在线视频一区| 中文字幕无码人妻少妇免费| 中文字幕在线观看一区二区| 国产午夜视频在线| 欧美中文字幕一区二区三区亚洲| www.亚洲天堂.com| 中文字幕欧美在线| 九九色在线视频| 成人www视频在线观看| 日韩三级视频| 国产91在线亚洲| 老司机免费视频一区二区三区| 老司机免费视频| 亚洲美腿欧美偷拍| 这里只有精品免费视频| 亚洲精品999| 青草视频在线免费直播| 91精品久久久久久| 国产精品三级| 波多野结衣家庭教师在线播放| 国产精品综合av一区二区国产馆| 极品蜜桃臀肥臀-x88av| 欧美日韩亚洲成人| 亚洲精品视频91| xvideos国产精品| 国产在线|日韩| 青青影院一区二区三区四区| 国产亚洲成人一区| 男女性杂交内射妇女bbwxz| 成人免费在线观看入口| а中文在线天堂| 亚洲天堂2020| 亚洲播播91| 欧美极品视频一区二区三区| 国产亚洲欧洲| 亚洲调教欧美在线| 亚洲超丰满肉感bbw| 国产刺激高潮av| 欧美激情视频网站| 日韩国产在线不卡视频| 男人日女人的bb| 国产一区中文字幕| 尤物在线免费视频| 欧美日产国产精品| 黄色动漫在线| 91丨九色丨国产| 欧美成人一品| 免费黄色av网址| 亚洲福利视频一区| 日韩在线视频观看免费| 欧美激情日韩图片| 国产伦乱精品| 99福利在线观看| 久久精品人人爽人人爽| 蜜臀尤物一区二区三区直播| 国产一区二区三区在线观看视频 | 亚洲自拍欧美色图| 欧美va亚洲va日韩∨a综合色| 韩国黄色一级片| 精品成人av一区| 飘雪影视在线观看免费观看| 国产精品成人va在线观看| 欧美日韩中文字幕一区二区三区 | 美女又爽又黄免费视频| 亚洲欧美在线磁力| 日本美女久久| 日韩精品一区二区三区电影| 丰满亚洲少妇av| 欧美啪啪小视频| 亚洲午夜精品视频| 色综合视频一区二区三区44| 天天干天天色天天爽| 成人自拍视频在线| 国产三级精品三级在线观看| 中文字幕欧美精品在线| 国产日韩欧美中文在线| 9色porny| 欧美国产精品一区二区| 国产ts人妖调教重口男| 亚洲18私人小影院| 欧美一区2区| 美女日批在线观看| 欧美性高潮在线| 麻豆传媒在线观看| 精品国产乱码久久久久软件| 日韩电影免费在线看| 欧美特级一级片| 亚洲欧美国产精品久久久久久久| 久久精品嫩草影院| www.国产在线播放| 国产女人18毛片水真多成人如厕 | 在线免费看av片| 欧美国产一区二区三区| 国产成人黄色| 丰满人妻一区二区三区53视频| 精品久久久久久久久久久| 日韩黄色影院| 精品一区二区国产| 精久久久久久久久久久| 日本一区二区三区精品| 欧美成人亚洲成人日韩成人| 亚洲三级网页| 日本wwww色| 欧美三级日本三级少妇99| 黄视频免费在线看| 浴室偷拍美女洗澡456在线|