精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

台湾佬中文在线| 免费日本黄色网址| 国产黄网站在线观看| 国产乱码字幕精品高清av| 欧美国产视频日韩| aaaa黄色片| 成人免费黄色| 亚洲精品中文在线影院| 国产在线精品一区二区三区| 国产男人搡女人免费视频| 久久精品国内一区二区三区水蜜桃 | 欧美xxx黑人xxx水蜜桃| 91视频在线观看免费| 成人免费xxxxx在线观看| 国产精品6666| 日韩电影免费在线观看| 亚洲第一福利网| 日韩精品视频一二三| a天堂资源在线| 成人黄色在线电影| 91麻豆精品一二三区在线| 亚洲国产一区二区a毛片| 亚洲a∨一区二区三区| 亚洲精品中文字幕成人片| 日韩av高清在线观看| 久久久久久香蕉网| 一级免费黄色录像| 日韩母乳在线| 欧美成人一区二区三区在线观看 | 欧美一区二区三区免费在线看| 亚洲 欧美 日韩 国产综合 在线| 91精品专区| 久久久亚洲精品一区二区三区| 91亚色免费| 在线视频欧美亚洲| 黄色亚洲精品| 日韩性生活视频| 3d动漫精品啪啪一区二区下载 | 国产ktv在线视频| 国产精品久久久久国产精品日日| 久久影视中文粉嫩av| 亚洲精品一区二区三区区别| 久久成人综合网| 国产精品v片在线观看不卡| 日本在线观看视频网站| 国产精品av一区二区| 伦伦影院午夜日韩欧美限制| 天天操天天干天天操天天干| 国产成人三级| 日韩精品极品在线观看| 欧美熟妇精品黑人巨大一二三区| 亚洲精品观看| 精品噜噜噜噜久久久久久久久试看| 中文字幕一区二区三区四区| 91精品综合视频| 中文字幕永久在线| 久久xxxx精品视频| 88国产精品欧美一区二区三区| 国产无码精品在线播放| 欧美日韩三级电影在线| 欧美大片网站在线观看 | 91精品国产乱码久久久久久久| 色小说视频一区| 殴美一级黄色片| 国产高清一区二区| 久久精品久久久久| 青娱乐国产盛宴| 欧美私人啪啪vps| 久久久久久网站| 国产成人在线免费视频| 国产一区成人| 国产成人精品av| 中日精品一色哟哟| 精品一区二区三区不卡 | 国产精品国产三级国产aⅴ中文| 婷婷五月色综合| 日本在线人成| 一区二区三区在线影院| 人妻夜夜添夜夜无码av| 欧美日韩在线观看首页| 91成人在线精品| 鲁一鲁一鲁一鲁一av| 国产va免费精品观看精品| 91麻豆精品国产91久久久资源速度| 在线播放黄色av| 日韩欧美另类中文字幕| 精品久久久久一区| 欧美精品性生活| 成人在线视频www| 欧美成人午夜电影| 亚洲综合自拍网| 九九久久成人| 亚洲视频电影图片偷拍一区| jizz日本在线播放| 欧美va天堂在线| 午夜精品久久久久久99热软件| 国产在线成人精品午夜| 蜜桃av综合| 国产精品视频最多的网站| 国产一区二区波多野结衣| 国产精品系列在线观看| 国产一区二区三区高清| 国内三级在线观看| 亚洲素人一区二区| 国产在线播放观看| 樱花草涩涩www在线播放| 欧美精品日日鲁夜夜添| 人妻换人妻a片爽麻豆| 中文字幕一区二区三区乱码不卡| 91福利在线尤物| 色伊人久久综合中文字幕| 亚洲美女性囗交| 欧美大奶一区二区| 中文字幕久久久| 日本在线一级片| 老色鬼久久亚洲一区二区| 91精品国产自产在线| 亚洲精品久久久久久久久久| 久久精品欧美日韩| 欧美a级黄色大片| 欧美舌奴丨vk视频| 日韩欧美国产一区二区在线播放| 精品夜夜澡人妻无码av| 久久婷婷蜜乳一本欲蜜臀| 国产91精品青草社区| 国产又黄又粗又硬| 久久品道一品道久久精品| 免费成人进口网站| 激情开心成人网| 欧美精品一区二区三区蜜桃| 99在线视频免费| 一区二区三区四区五区在线| 国产精品久久一区| 天天操天天插天天射| 亚洲天堂免费在线观看视频| 成年人免费在线播放| 亚洲国产欧美国产第一区| 亚洲一二三在线| 日韩欧美大片在线观看| 国模一区二区三区白浆| 日本不卡一区二区三区在线观看| 污污网站在线观看| 欧美日韩午夜剧场| 国产乱淫av片| 午夜精品999| 成人黄色在线免费| aaa日本高清在线播放免费观看| 欧美日韩亚洲91| 稀缺呦国内精品呦| 欧美日韩p片| 成人欧美一区二区三区在线湿哒哒| 毛片免费在线观看| 色婷婷综合久久久久中文 | 国产麻豆精品视频| 一本一本a久久| 日本在线中文字幕一区二区三区| 日韩欧美电影一二三| 国产一二三四区| 精品一区二区综合| 伊人久久大香线蕉成人综合网| 五月激情久久| 亚洲一区二区黄| 少妇高潮av久久久久久| 91免费版在线| 国产无限制自拍| 偷拍自拍一区| 日本亚洲精品在线观看| 亚洲欧美色视频| 午夜一区二区三区在线观看| 亚洲欧美日韩色| 中日韩男男gay无套| 国产一级特黄a大片99| 欧美性猛片xxxxx免费中国| 精品精品国产高清a毛片牛牛| 成年人av电影| 国产精品亚洲一区二区三区妖精| 国产在线拍揄自揄拍无码| 免费观看性欧美大片无片| 九九久久久久久久久激情| www日本在线| 亚洲成人高清在线| 成年人在线观看av| 免费亚洲电影在线| 中文字幕日韩一区二区三区| 蜜桃精品视频| 久久久视频在线| 神马久久久久| 欧美少妇性性性| 久久久久99精品成人片试看| 国产成人亚洲综合色影视| 91动漫在线看| 欧美日韩爱爱| 成人av在线亚洲| 一色桃子av在线| 精品一区电影国产| 中文在线观看免费高清| 亚洲精品免费电影| 添女人荫蒂视频| 全部av―极品视觉盛宴亚洲| 综合久久国产| 18国产精品| 国产suv精品一区二区三区88区| 成人高潮成人免费观看| 91精品国产一区二区三区蜜臀| 国产精品第9页| 中日韩av电影| 成人做爰www看视频软件| 免费日韩视频| 一区二区三区四区久久| 国产主播性色av福利精品一区| 欧美一级在线亚洲天堂| 国内精品不卡| 亚洲精品日韩丝袜精品| 国产又粗又猛又爽又黄的视频一| 亚洲一二三专区| 亚洲色图 激情小说| 成人一区二区三区中文字幕| 日本新janpanese乱熟| 欧美激情无毛| 日韩在线三级| 欧美尿孔扩张虐视频| 国产精品久久久久免费a∨大胸| 羞羞的视频在线看| 国产亚洲人成网站在线观看| 亚洲成人av综合| 欧美日韩视频不卡| 国产一级精品视频| 一区二区三区四区av| 肉色超薄丝袜脚交69xx图片| 久久午夜国产精品| 国产伦理在线观看| 奇米777欧美一区二区| 久久久久久免费看| 91成人精品| 五月天色一区| 亚洲人成网77777色在线播放| 亚洲www在线| 不卡亚洲精品| 欧美性做爰毛片| 1024在线看片你懂得| 欧美黑人巨大xxx极品| 成人性生交大片免费看午夜| 亚洲国产精品久久| 午夜免费福利视频| 欧美精品tushy高清| 夜夜躁日日躁狠狠久久av| 舔着乳尖日韩一区| 亚洲伊人成人网| 亚洲国产精品久久不卡毛片 | 欧美猛男性生活免费| 一级毛片视频在线| 国产亚洲精品久久久优势| 午夜影院在线视频| 精品国产成人在线影院| 亚洲视屏在线观看| 欧美人与z0zoxxxx视频| 国产乡下妇女三片| 91黄视频在线观看| 无码人妻久久一区二区三区 | 日韩视频免费中文字幕| 97人人在线| 色伦专区97中文字幕| eeuss影院www在线播放| 精品视频www| 精品美女视频在线观看免费软件 | 亚洲天堂网在线观看视频| 久久青青草原亚洲av无码麻豆| 久久影院视频免费| 日韩一级av毛片| 中文字幕第一区综合| 日本美女xxx| 国产精品久久久爽爽爽麻豆色哟哟| 我不卡一区二区| 国产精品久久久久天堂| 中文字幕av播放| 亚洲午夜在线电影| 成人在线免费看视频| 欧美性xxxx极品hd满灌| 一级片在线免费播放| 欧美日韩精品欧美日韩精品一综合| 亚洲无码久久久久| 日韩一区二区麻豆国产| 亚洲手机在线观看| 日韩一区二区视频| 刘玥91精选国产在线观看| 亚洲精品久久久久久久久久久久 | 日韩精品91亚洲二区在线观看| 国内精品视频一区二区三区| 日韩av一二三| 青青草精品在线| 成人动漫精品一区二区| 中文字幕国产综合| 中文字幕一区在线观看视频| 久久久久久av无码免费网站| 欧美日韩亚洲一区二区三区| 国产精品欧美综合| 欧美成人欧美edvon| 男女视频在线观看免费| 俺也去精品视频在线观看| av丝袜在线| 亚洲综合在线第一页| 中文字幕一区二区三区在线乱码| 亚洲激情五月| 黄色动漫在线免费看| 午夜在线精品偷拍| 三级网站免费看| 2017欧美狠狠色| 国产三级精品三级观看| 亚洲国产精品久久艾草纯爱| 亚洲成人av网址| 日韩视频123| 香蕉视频免费在线播放| 高清欧美性猛交xxxx黑人猛交| 久久91导航| 99理论电影网| 精品国产乱码久久久| 九色自拍视频在线观看| 日本在线播放一区二区三区| 中文字幕在线国产| 国产精品传媒入口麻豆| 男人的天堂一区| 色屁屁一区二区| 国精品人妻无码一区二区三区喝尿| 国产一区二区三区视频免费| xxx.xxx欧美| 国产日韩在线精品av| 亚洲v天堂v手机在线| 阿v天堂2018| 精品一区二区三区视频| 美女精品视频一区| 午夜伦理在线| 69av成年福利视频| 9l视频自拍蝌蚪9l视频成人| 亚洲电影网站| 久久久久久久高潮| 中国极品少妇xxxx| 亚洲欧美日韩一区二区三区在线观看| 黄色av一区二区| 精品亚洲一区二区三区| 密臀av在线| 91久久国产精品91久久性色| 国产一区二区三区四区大秀| 99re8这里只有精品| 美女在线观看视频一区二区| 国产全是老熟女太爽了| 精品国产91久久久久久老师| 亚洲国产精品一| 色偷偷9999www| 日韩专区视频网站| 天天综合狠狠精品| 久久精品主播| 偷拍女澡堂一区二区三区| 丰满岳妇乱一区二区三区| 高清乱码毛片入口| 欧美华人在线视频| 欧美日韩午夜电影网| ijzzijzzij亚洲大全| 国产制服丝袜一区| 中文字幕观看av| 欧美喷水一区二区| 9191在线观看| 国产美女主播一区| 成人在线免费观看视频| 国产一级不卡毛片| 亚洲国产精品成人综合色在线婷婷| 欧美黄色一级大片| 亚洲系列中文字幕| 日本欧美在线| 久久最新免费视频| 成人一级片网址| 日本一区二区三区四区五区| 国产视频一区在线| 亚洲伦理影院| 亚欧精品在线| 精品亚洲成a人在线观看| 91插插插插插插| 欧美va在线播放| 僵尸再翻生在线观看免费国语| 精品欧美一区二区在线观看视频| 欧美日韩国产成人精品| 中文字幕三级电影| 精品久久久一区| 国产香蕉视频在线看| 国产欧美一区二区三区在线看| 中文在线播放一区二区| 日批免费观看视频| 色偷偷久久人人79超碰人人澡| 成年人视频在线观看免费| 国产精品96久久久久久又黄又硬| 亚洲精品成人| 白嫩情侣偷拍呻吟刺激| 色偷偷久久一区二区三区| 欧美jizz18性欧美| 精品国产aⅴ麻豆| 蜜臀av性久久久久蜜臀aⅴ流畅| 黄色a级片在线观看| 亚洲精品在线电影| 欧美a一级片| 日韩中字在线观看| 国产精品午夜在线|