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

JavaScript 終于原生支持?jǐn)?shù)組分組了!

開發(fā) 前端
在日常開發(fā)中,很多時(shí)候需要對(duì)數(shù)組進(jìn)行分組,每次都要手寫一個(gè)分組函數(shù),或者使用lodash的groupBy函數(shù)。好消息是,JavaScript 現(xiàn)在正在引入全新的分組方法:Object.groupBy和Map.groupBy,以后再也不需要手寫分組函數(shù)了,目前最新版本的 Chrome(117)已經(jīng)支持了這兩個(gè)方法!

以前的數(shù)組分組

假設(shè)有一個(gè)由表示人員的對(duì)象組成的數(shù)組,需要按照年齡進(jìn)行分組。可以使用forEach循環(huán)來實(shí)現(xiàn),代碼如下:

const people = [
  { name: "Alice", age: 28 },
  { name: "Bob", age: 30 },
  { name: "Eve", age: 28 },
];

const peopleByAge = {};

people.forEach((person) => {
  const age = person.age;
  if (!peopleByAge[age]) {
    peopleByAge[age] = [];
  }
  peopleByAge[age].push(person);
});

console.log(peopleByAge);

輸出結(jié)果如下:

{
  "28": [{"name":"Alice","age":28}, {"name":"Eve","age":28}],
  "30": [{"name":"Bob","age":30}]
}

也可以使用reduce方法:

const peopleByAge = people.reduce((acc, person) => {
  const age = person.age;
  if (!acc[age]) {
    acc[age] = [];
  }
  acc[age].push(person);
  return acc;
}, {});

無論哪種方式,代碼都略顯繁瑣。每次都要檢查對(duì)象,看分組鍵是否存在,如果不存在,則創(chuàng)建一個(gè)空數(shù)組,并將項(xiàng)目添加到該數(shù)組中。

使用 Object.groupBy 分組

可以通過以下方式來使用新的Object.groupBy方法:

const peopleByAge = Object.groupBy(people, (person) => person.age);

可以看到,代碼非常簡(jiǎn)潔!

不過需要注意,使用Object.groupBy方法返回一個(gè)沒有原型(即沒有繼承任何屬性和方法)的對(duì)象。這意味著該對(duì)象不會(huì)繼承Object.prototype上的任何屬性或方法,例如hasOwnProperty或toString等。雖然這樣做可以避免意外覆蓋Object.prototype上的屬性,但也意味著不能使用一些與對(duì)象相關(guān)的方法。

const peopleByAge = Object.groupBy(people, (person) => person.age);
console.log(peopleByAge.hasOwnProperty("28"));
// TypeError: peopleByAge.hasOwnProperty is not a function

在調(diào)用Object.groupBy時(shí),傳遞給它的回調(diào)函數(shù)應(yīng)該返回一個(gè)字符串或 Symbol 類型的值。如果回調(diào)函數(shù)返回其他類型的值,它將被強(qiáng)制轉(zhuǎn)換為字符串。

在這個(gè)例子中,回調(diào)函數(shù)返回的是一個(gè)數(shù)字類型的age屬性值,但由于Object.groupBy方法要求鍵必須是字符串或 Symbol 類型,所以該數(shù)字會(huì)被強(qiáng)制轉(zhuǎn)換為字符串類型。

console.log(peopleByAge[28]);
// => [{"name":"Alice","age":28}, {"name":"Eve","age":28}]
console.log(peopleByAge["28"]);
// => [{"name":"Alice","age":28}, {"name":"Eve","age":28}]

使用 Map.groupBy 分組

Map.groupBy和Object.groupBy幾乎做的是相同的事情,只是返回的結(jié)果類型不同。Map.groupBy返回一個(gè)Map對(duì)象,而不是像Object.groupBy返回一個(gè)普通的對(duì)象。

const ceo = { name: "Jamie", age: 40, reportsTo: null };
const manager = { name: "Alice", age: 28, reportsTo: ceo };

const people = [
  ceo
  manager,
  { name: "Bob", age: 30, reportsTo: manager },
  { name: "Eve", age: 28, reportsTo: ceo },
];

const peopleByManager = Map.groupBy(people, (person) => person.reportsTo);

這里根據(jù)人的匯報(bào)上級(jí)將他們進(jìn)行了分組。如果想通過對(duì)象來從這個(gè)Map中獲取數(shù)據(jù),那么要求這些對(duì)象具有相同的身份或引用。這是因?yàn)镸ap在比較鍵時(shí)使用的是嚴(yán)格相等(===),只有兩個(gè)對(duì)象具有相同的引用,才能被認(rèn)為是相同的鍵。

peopleByManager.get(ceo);
// => [{ name: "Alice", age: 28, reportsTo: ceo }, { name: "Eve", age: 28, reportsTo: ceo }]
peopleByManager.get({ name: "Jamie", age: 40, reportsTo: null });
// => undefined

在上面的例子中,如果嘗試使用與ceo對(duì)象類似的對(duì)象作為鍵去訪問Map中的項(xiàng),由于這個(gè)對(duì)象與之前存儲(chǔ)在Map中的ceo對(duì)象不是同一個(gè)對(duì)象,所以無法檢索到對(duì)應(yīng)的值。

瀏覽器支持

這兩個(gè)groupBy方法是 proposal-array-grouping 提案提出的,該提案目前處于第3階段,預(yù)計(jì)會(huì)在 2024 年成為正式標(biāo)準(zhǔn)。

9 月 12 日,Chrome 117發(fā)布,該版本支持了這兩個(gè)方法。Firefox Nightly 在一個(gè)標(biāo)志后已經(jīng)實(shí)現(xiàn)了這兩個(gè)方法。Safari已經(jīng)以不同的名稱實(shí)現(xiàn)了這些方法。由于這些方法在 Chrome 中可用,這意味著它們已經(jīng)在V8中被實(shí)現(xiàn),所以下一次V8更新時(shí)它們將在Node中可用。

為什么要使用靜態(tài)方法?

你可能會(huì)想,為什么這個(gè)功能被實(shí)現(xiàn)為Object.groupBy而不是Array.prototype.groupBy。根據(jù)提案,有一個(gè)庫(kù)曾經(jīng)用不兼容的groupBy方法對(duì)Array.prototype進(jìn)行了修改。在考慮為Web新增API時(shí),向后兼容性非常重要。幾年前,在嘗試實(shí)現(xiàn)Array.prototype.flatten時(shí)就出現(xiàn)了一個(gè)稱為SmooshGate的事件。

使用靜態(tài)方法實(shí)際上對(duì)未來的可擴(kuò)展性更好。當(dāng)Records和Tuples提案實(shí)現(xiàn)時(shí),可以添加一個(gè)Record.groupBy方法,用于將數(shù)組分組為不可變記錄。

簡(jiǎn)而言之,使用靜態(tài)方法可以更好地保持向后兼容性,并提供更好的擴(kuò)展性,以便在未來添加更多功能和數(shù)據(jù)結(jié)構(gòu)。

JavaScript 正在填補(bǔ)這些空白,并使我們的開發(fā)更簡(jiǎn)單。目前,lodash.groupBy每周的 npm 下載量在 150 萬至 200 萬次之間,當(dāng)所有瀏覽器都支持該方法之后,就不再需要引入lodash.groupBy 庫(kù)了!

責(zé)任編輯:姜華 來源: 前端充電寶
相關(guān)推薦

2023-11-03 07:21:40

Javascript數(shù)組分組

2025-07-29 00:00:00

2023-08-29 09:43:21

Node.js.env

2025-11-07 00:00:00

2015-12-15 10:32:44

chromecss開發(fā)

2020-03-02 15:17:37

云原生CNCF容器

2016-12-21 09:35:55

JavaScript原生數(shù)組函數(shù)

2014-01-22 09:46:42

JavaScript數(shù)組

2023-07-24 09:11:43

CSS滾動(dòng)驅(qū)動(dòng)動(dòng)畫

2022-07-04 09:21:16

GNOME Web瀏覽器

2020-05-08 08:01:11

多線程Redis處理

2024-01-08 09:28:20

2023-05-29 08:38:56

popover控制懸浮層

2025-01-20 00:00:00

Java語言Record

2023-02-13 09:31:07

CSS前端

2023-04-10 09:18:42

CSS前端

2023-11-23 11:37:13

JavaScript數(shù)組

2023-10-31 07:40:15

EslintJSHint

2024-07-08 00:00:07

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

视频在线一区二区| 亚洲精品国产第一综合99久久 | 国产原厂视频在线观看| 国模少妇一区二区三区| 欧美激情在线观看| 亚洲黄色小说视频| 日韩成人一区| 欧美日韩午夜激情| 亚洲一区三区电影在线观看| 成人午夜免费福利| 日av在线不卡| 久久久久国产一区二区三区| 三上悠亚ssⅰn939无码播放| 成人激情久久| 91搞黄在线观看| 国产精品av免费观看| 国产小视频一区| 久久精品理论片| 97在线观看免费高清| 黄色一级片一级片| 琪琪久久久久日韩精品| 91麻豆精品国产91久久久使用方法| www污在线观看| 亚洲免费视频一区二区三区| 91一区一区三区| 91系列在线观看| 老熟妇一区二区三区啪啪| 国内精品久久久久久久影视麻豆| 亚洲丝袜一区在线| 伊人久久一区二区三区| 国产精品久一| 欧美日韩一区二区不卡| 欧美一区二区三区爽大粗免费| 黄网站在线免费看| 国产精品视频免费| 日本在线免费观看一区| 五十路在线观看| 国产白丝精品91爽爽久久| 国产精品一二三视频| 手机看片久久久| 欧美日一区二区在线观看| 最好看的2019年中文视频| 国产成人av一区二区三区不卡| 成人知道污网站| 日韩亚洲欧美成人一区| 亚洲热在线视频| 日韩成人精品一区二区三区| 欧美日韩亚洲高清一区二区| 欧美日韩亚洲一二三| 欧美三级网站| 欧美日韩裸体免费视频| 免费无码不卡视频在线观看| jizz一区二区三区| 亚洲国产精品久久人人爱蜜臀| 国产小视频免费| 在线h片观看| 亚洲一区二区在线播放相泽| 日韩精品免费一区| 女囚岛在线观看| 亚洲影院免费观看| 国产色一区二区三区| 538在线视频| 午夜精品久久久久久| 妞干网在线视频观看| 18video性欧美19sex高清| 亚洲国产成人av好男人在线观看| 激情五月婷婷六月| 都市激情国产精品| 疯狂做受xxxx高潮欧美日本| 成年网站在线免费观看| 在线国产成人影院| 欧美日韩激情一区二区三区| 三级一区二区三区| 一区二区三区在线免费看 | 五月天一区二区| 热99这里只有精品| 成人教育av| 91成人免费在线视频| 自拍偷拍21p| 日韩免费精品| 亚洲国产毛片完整版| 色婷婷av777| 欧美肥老太太性生活| 欧美成人一区在线| 特黄视频免费看| 老司机免费视频一区二区三区| 亚洲a在线观看| 五十路在线视频| 国产精品成人一区二区三区夜夜夜| 自拍另类欧美| 国产激情在线播放| 欧美私模裸体表演在线观看| 免费国偷自产拍精品视频| 欧美三级电影在线| 色一情一乱一区二区| 久草视频中文在线| 青青草国产精品97视觉盛宴| 91亚洲精品视频| 青梅竹马是消防员在线| 1024亚洲合集| 国产美女无遮挡网站| 91精品国产一区二区在线观看| 亚洲国产精品推荐| 国产高清视频免费在线观看| 国产精品美女久久久| 91网站免费观看| 国产精品毛片一区二区三区四区| 亚洲黄色小视频| 日本激情视频在线播放| 哺乳一区二区三区中文视频| 中文字幕国产精品| 日韩少妇裸体做爰视频| 国产一区二区在线影院| 欧美日本韩国国产| 韩国成人免费视频| 欧美精品丝袜中出| 一级黄色片大全| 欧美特黄一区| 91美女高潮出水| 国产精品久久久久一区二区国产 | 日日骚av一区| 五月天婷婷久久| 国产成人免费视频网站高清观看视频| 日韩视频精品| 亚洲欧洲美洲av| 欧美成人猛片aaaaaaa| 又嫩又硬又黄又爽的视频| 国产欧美成人| 国产精品国产三级国产专区53 | 亚洲女人的天堂| 波多野结衣作品集| 欧美日日夜夜| 久久久视频免费观看| 国产精品久久久久久免费播放| 久久先锋影音av| 日韩五码在线观看| jizz性欧美23| 欧美区二区三区| 国产伦理吴梦梦伦理| 欧美久久精品| 免费日韩一区二区| 91网站免费看| 黄视频网站在线| 欧美午夜免费电影| 亚洲区免费视频| 99热免费精品在线观看| 国产传媒一区二区三区| 亚洲卡一卡二| 日韩女优毛片在线| 看黄色录像一级片| 精品一区二区三区视频| 亚洲天堂电影网| 日本午夜免费一区二区| 日韩一区二区三区在线播放| 一级黄色a视频| 中文字幕一区二区三区不卡在线| 亚洲免费一级视频| 91精品动漫在线观看| 91影视免费在线观看| √天堂8在线网| 日韩欧美二区三区| 日本天堂在线视频| 91丨九色丨黑人外教| 三级4级全黄60分钟| 国产探花在线精品| 国产精品视频网址| 草莓福利社区在线| 亚洲成av人片在线观看香蕉| 日产精品久久久久| 91看片淫黄大片一级在线观看| 欧美视频第三页| 日韩电影二区| 91热精品视频| caoprom在线| 亚洲欧美精品在线| 少妇又紧又色又爽又刺激视频| 国产精品嫩草影院com| 乳色吐息在线观看| 午夜亚洲性色视频| 在线观看国产一区| 综合中文字幕| 3344国产精品免费看| av电影在线观看| 日韩一卡二卡三卡四卡| 成人精品在线看| 国产精品萝li| 无码国产69精品久久久久网站| 亚洲在线成人| 懂色av一区二区三区四区五区| 日本在线成人| 日韩av免费网站| 久草资源在线观看| 日韩成人av网| 在线视频精品免费| 伊人色综合久久天天| 四虎永久免费影院| 国产一区久久久| 999香蕉视频| 亚洲欧美网站在线观看| 久久精品午夜一区二区福利| 男人亚洲天堂| 2019亚洲日韩新视频| 秋霞成人影院| 精品五月天久久| 中文字幕观看在线| 亚洲六月丁香色婷婷综合久久| 亚洲av无码成人精品国产| 国产在线国偷精品免费看| 777久久久精品一区二区三区| 91九色精品| 欧美日韩在线精品一区二区三区| 日本一区二区电影| 国内精品中文字幕| 草莓福利社区在线| 日韩中文视频免费在线观看| 深夜福利视频网站| 欧美一区二区高清| 国产一级精品毛片| 色狠狠av一区二区三区| 日韩美女视频网站| 亚洲综合久久久| 亚洲熟女毛茸茸| 国产免费久久精品| 91网站免费入口| 91蜜桃免费观看视频| 美女伦理水蜜桃4| 国产剧情在线观看一区二区| 国产又黄又猛又粗又爽的视频| 99热免费精品在线观看| 天堂8在线天堂资源bt| 亚洲精品99| 黑人巨大国产9丨视频| 日韩综合在线| 亚洲v日韩v欧美v综合| 精品中文一区| 欧美福利精品| 亚洲裸色大胆大尺寸艺术写真| 国产一区二区三区av在线| 欧美经典影片视频网站| 91亚洲国产成人精品性色| 亚洲狼人在线| 91系列在线观看| 久久99成人| 亚洲在线免费看| 国产精品久久久久久久久久辛辛 | 国产农村妇女精品| 国产免费一区二区三区网站免费| 91在线视频免费91| 精品人妻一区二区三区日产乱码卜| av一本久道久久综合久久鬼色| 日本黄色免费观看| 91在线国产观看| 免费在线观看你懂的| 国产欧美日本一区视频| 日韩福利在线视频| 1区2区3区精品视频| 欧美色图亚洲天堂| 亚洲高清免费视频| 99热只有这里有精品| 精品久久中文字幕| 黄色av网站免费观看| 欧美色国产精品| 国产婷婷一区二区三区久久| 日韩免费福利电影在线观看| 欧美 日韩 人妻 高清 中文| 国产丝袜视频一区| 九九热视频在线观看| 精品国产欧美一区二区三区成人| 精品51国产黑色丝袜高跟鞋| 久久久噜噜噜久久中文字免| 最新中文字幕在线播放| 国产精品久久久av| 久久久国产精品入口麻豆| 国产一区二区高清视频| 欧美偷拍综合| 欧美一级特黄aaaaaa在线看片| 在线 亚洲欧美在线综合一区| 日韩精品一区二区三区久久| 老司机精品视频导航| 日本泡妞xxxx免费视频软件| 91免费国产视频网站| 日本一二三不卡视频| 一区二区三区在线播放| 天天干天天干天天操| 欧美久久一二区| 无码精品视频一区二区三区 | 中日韩一级黄色片| 亚洲成人一区二区| 少妇又紧又色又爽又刺激视频| 日韩一区二区三区视频| 九色在线免费| 久久999免费视频| 色老太综合网| av一区和二区| 日韩dvd碟片| 成人毛片视频网站| 国内成人免费视频| 免费中文字幕av| 亚洲欧美日韩人成在线播放| 久久久精品免费看| 日韩免费高清视频| 1769视频在线播放免费观看| 国模精品一区二区三区色天香| 日韩欧美激情| 日韩精品第一页| 亚洲清纯自拍| 被黑人猛躁10次高潮视频| 国产视频视频一区| 日韩xxx高潮hd| 91麻豆精品国产自产在线| 国产二区视频在线观看| 91国产高清在线| 欧美成人精品午夜一区二区| 色综合久久久久久久久五月| 亚洲深夜av| 野战少妇38p| 亚洲另类在线一区| 国产精品久久久久久在线| 一区二区三区天堂av| 在线免费看h| 国产免费一区| 国产精品啊v在线| 亚洲午夜精品一区| 国产精品毛片久久久久久久| 五月天婷婷导航| 国产视频一区在线| 人成在线免费网站| 国产免费一区| 亚洲激情不卡| 中文字幕在线播放一区二区| 亚洲人成网站影音先锋播放| 一级黄色大片免费观看| 在线播放日韩精品| 国产在线|日韩| 欧美一区二区三区在线免费观看| 一本一本久久| 国产精品伦子伦| 精品成人久久av| 五月激情六月婷婷| 66m—66摸成人免费视频| 91成人入口| 老子影院午夜伦不卡大全| 成人激情校园春色| 99热国产在线观看| 日韩精品久久久久久久玫瑰园| a天堂资源在线| 精品毛片久久久久久| 国产欧美日韩综合一区在线播放| 中文字幕乱码在线| 岛国av一区二区在线在线观看| 亚洲区小说区图片区| 2019精品视频| 免费一区二区三区视频导航| 男女啪啪网站视频| 国产精品成人午夜| 99视频在线观看免费| 久久99热这里只有精品国产| eeuss国产一区二区三区四区| av无码久久久久久不卡网站| av一区二区三区四区| 天天干,天天干| 伊人av综合网| 成人动漫视频在线观看| 精品人妻人人做人人爽| kk眼镜猥琐国模调教系列一区二区| 99热在线观看免费精品| 一区二区三区回区在观看免费视频| 欧美性生活一级| 欧美国产视频一区| 91麻豆精品秘密| 91精品国产乱码久久久久| 欧美高清性猛交| 一本色道久久综合亚洲精品酒店| 久久99999| 亚洲精品中文在线观看| 亚洲 欧美 激情 小说 另类| 国产精品视频yy9099| 欧美jjzz| 实拍女处破www免费看| 3d动漫精品啪啪一区二区竹菊| 超碰高清在线| 五月天久久狠狠| 懂色av一区二区三区免费观看 | 三级成人在线视频| 免费看特级毛片| 日韩精品免费一线在线观看| 美女久久久久久| aa在线观看视频| 国产精品免费视频网站| 色综合免费视频| 成人国产亚洲精品a区天堂华泰| 亚洲人体偷拍| 国产大屁股喷水视频在线观看| 亚洲第一精品夜夜躁人人躁| 另类一区二区| 国产精品后入内射日本在线观看| 专区另类欧美日韩| 久草视频在线看| 国产精品一区二| 精品制服美女丁香|