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

如何在 JavaScript 中使用數組歸約器實現 SQL 聚合函數

開發 前端
SQL查詢中的聚合函數對一個或多個值執行計算,并返回單個值。

SQL查詢中的聚合函數對一個或多個值執行計算,并返回單個值。

  • Count計算行數。
  • Sum從給定的列中添加所有值。
  • Min和Max返回指定列的最低和最高值。
  • AVG計算給定列中所有值的平均值。

在所有示例中,我們將使用下表。

Articles
Title | Views
3 Ways of Invoking a Method | 123
3 Iterables Converted Into Arrays | 88
How to Find Elements in Array | 402
How to Position a Div | 103

以下是文章對象的相應數組。

const articles = [
{title: '3 Ways of Invoking a Method', views: 123},
{title: '3 Iterables Converted Into Arrays', views: 88},
{title: 'How to Find Elements in Large Arrays', views: 402},
{title: 'How to Position a Div Element', views: 103}
]

RELAD方法使用還原函數將所有值從數組匯總為單個值,它在數組的每個元素上執行給定的還原函數。

我們可以編寫不同的還原函數,并計算與SQL查詢中的聚合函數相同的聚合物。

Count?

下一個SQL查詢計算文章表中的行數。

SELECT COUNT(*)
FROM Articles

為了在數組中獲取對象的數量,我們可以簡單地訪問長度屬性。

articles.length

盡管如此,我們可以編寫一個不計算數組中未定義值的還原器。如果當前元素不是無效的,則計算值在每個步驟中會增加。

function count(total, article){
return (article != null && article !== undefined) ? total + 1 : total;
}

總聚合值用0初始化。請注意,第二個參數傳遞給了Reduce方法。

const noOfArticles= articles.reduce(count, 0);

Sum

下一個SQL查詢從表中的所有文章中檢索了視圖總數。

SELECT SUM(Views)
FROM Articles

我們可以使用以下還原函數從一系列對象計算總視圖。它采用到目前為止計算的觀點總數和當前文章,它從文章中提取視圖數量,并將其廣告為總數。

function sum(total, article){
const {views} = article;
return total + views;
}

進行此計算時,我們從0開始作為視圖總數。

const total = articles.reduce(sum, 0);

先前的解決方案很好,它可以執行所需的計算,但太具體了。讓我們嘗試編寫一個更通用的功能,該功能以用于計算總和的屬性名稱。

function sum(propName){}

事實是,Reduce方法使用兩個參數調用還原函數。第一個是到目前為止計算的匯總值,第二個參數是當前元素。Reduce方法不會發送我們要接受的屬性名稱。

解決方案是使Sum函數獲取所需的屬性名稱,然后,返回Reduce方法所需的還原功能。

這是一個例子。

function sum(propName){
return function(total, obj){
const {[propName]: value} = obj;
return total + value;
}
}

請注意,我們如何使用破壞分配語法將對象從對象中動態提取為稱為值的新變量。

const {[propName]: value} = obj;

在下面的總和函數下方創建了Reduce方法使用的還原函數。

const total = articles.reduce(sum('views'), 0);

將另一個函數作為輸入或返回函數的功能是高階函數,Sum是一個高階函數。

Min

下一個SQL查詢使用最小聚合函數來顯示文章中的最小視圖數量。

SELECT MIN(Views)
FROM Articles
//88

使用還原器可以實現相同的結果,該還原器迄今為止計算出的最小視圖數量和當前文章對象。當當前文章的視圖少于到目前為止計算的當前最小值時,當前的視圖數將成為新的最小值。

function min(propName){
return function(minimum, obj){
const {[propName]: value} = obj;
return value < minimum ? value : minimum;
}
}

我們需要回答另一個問題,計算總和0是初始值。計算最小值時的初始值是多少?

一個不錯的選擇是將第一篇文章中的視圖數量用作最初的最小值。

const minum = articles.reduce(min('views'), articles[0].views);

Max

下面的SQL查詢應用最大聚合函數以找到最大視圖數。

SELECT MAX(Views)
FROM Articles

最大函數以屬性名稱檢查并返回還原功能,還原器到目前為止獲得了計算的最大值和當前對象。當當前對象的視圖大于迄今為止計算的值大的視圖時,當前視圖數量變為新的最大值。否則,返回已經計算的最大值。

function max(propName){
return function(maximum, obj){
const {[propName]: value} = obj;
return value > maximum ? value : maximum;
}
}

調用減少方法時,我們可以從0開始作為初始視圖數量。

const total = articles.reduce(max('views'), 0);
console.log(total);

Avg

下面的查詢使用AVG函數計算所有文章的平均視圖數量。

SELECT AVG(Views)
FROM Articles

平均值基本上是通過數字或文章潛入所有視圖總和的結果,我們可以使用先前的Sum 還原器來計算視圖總數,然后通過數組中的元素數進行潛水。

const total= articles.reduce(sum('views'), 0);
const averageViews = total / articles.length;

寫在最后

SQL查詢中的聚合函數允許將幾行的值匯總到計算值中。

Reduce數組方法允許將數組中的所有元素匯總到單個值中。

我們可以實現 reducer 函數,并計算與SQL查詢中的匯總函數相同的聚合物。

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

2024-11-04 15:30:43

Python裝飾器函數

2023-03-05 19:28:11

JavaScripCSS

2019-04-23 15:20:26

JavaScript對象前端

2022-05-10 09:12:16

TypeScript裝飾器

2018-10-11 09:40:53

前端JavaScript編程語言

2020-09-09 07:00:00

TensorFlow神經網絡人工智能

2023-08-24 10:24:54

GitLabPodman

2021-03-11 23:43:20

JavaScript數組開發

2021-03-18 10:45:02

JavaScript數組運算符

2020-08-02 23:56:34

JavaScript函數代碼

2022-05-17 08:25:10

TypeScript接口前端

2022-06-23 08:00:53

PythonDateTime模塊

2021-06-09 09:36:18

DjangoElasticSearLinux

2021-03-09 07:27:40

Kafka開源分布式

2015-08-27 09:46:09

swiftAFNetworkin

2024-01-18 08:37:33

socketasyncio線程

2011-08-10 09:31:41

Hibernateunion

2019-09-16 19:00:48

Linux變量

2014-07-02 09:47:06

SwiftCocoaPods

2020-11-30 11:55:07

Docker命令Linux
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美国产日韩在线观看 | www.亚洲免费 | 日韩一区二区三区在线视频 | 亚洲视频在线观看免费 | 亚洲在线一区 | 黑人性hd| 99精品视频在线观看免费播放 | 天天欧美| 国产精品美女在线观看 | 精品一区av| 日韩精品一区二区三区在线播放 | 正在播放国产精品 | 国产伦精品一区二区三区精品视频 | 一区二区免费在线观看 | 九九九久久国产免费 | 国产精品成人一区 | 一区二区三区四区在线视频 | 一区二区av在线 | 国产中文一区二区三区 | 99视频精品 | 国产一区二区三区四区五区加勒比 | 日本a视频 | 四虎成人在线播放 | 国产精品揄拍一区二区 | 日韩中文在线观看 | 黄色免费观看 | 一区二区三区四区在线 | 欧美日韩中文在线观看 | 国产在线一区二 | 精品国产乱码久久久久久果冻传媒 | 日韩高清中文字幕 | 欧美一级二级视频 | 亚洲视频免费在线观看 | 91精品久久久久久久久久 | 欧美高清免费 | 亚洲天天干 | www亚洲精品 | 黄色免费在线观看网站 | 国产精品久久久久久模特 | 国产精品视频免费观看 | 欧美天堂在线观看 |