首頁 > web前端 > js教程 > 分享JS的一些優雅寫法(reduce/map)

分享JS的一些優雅寫法(reduce/map)

藏色散人
發布: 2023-03-29 17:13:51
轉載
1871 人瀏覽過

這篇文章為大家帶來了關於JS的相關知識,其中主要給大家介紹了JS的一些優雅寫法,感興趣的朋友下面一起來看一下吧,希望對大家有幫助。

分享JS的一些優雅寫法(reduce/map)

JS的一些優雅寫法

reduce

##1、可以使用reduce 方法來實現物件數組中根據某一key值求和

例如,假設有以下物件數組:

const arr = [
  { name: 'apple', price: 2 },
  { name: 'banana', price: 3 },
  { name: 'orange', price: 4 },
];
登入後複製
登入後複製
登入後複製

如果要根據price屬性求和,可以使用下列程式碼:

const sum = arr.reduce((acc, cur) => acc + cur.price, 0);
console.log(sum); // 9
登入後複製

分享JS的一些優雅寫法(reduce/map)

其中,reduce方法的第一個參數是一個回呼函數,它接收兩個參數:累加器(acc)和目前元素(cur)。回調函數的傳回值會作為下一次呼叫回呼函數時的累加器的值。 reduce方法的第二個參數是累加器的初始值,這裡設定為0。

在回呼函數中,我們將累加器和目前元素的price屬性相加,最終得到了所有元素的price屬性的總和。

map

1、可以使用map方法來實作物件陣列中根據某一key值,取得另外一個key的值。

例如,假設有以下物件陣列:

const arr = [
  { name: 'apple', price: 2 },
  { name: 'banana', price: 3 },
  { name: 'orange', price: 4 },
];
登入後複製
登入後複製
登入後複製

如果要根據name屬性取得price屬性,可以使用下列程式碼:

const prices = arr.map(item => item.name === 'banana' ? item.price : null);
console.log(prices); // [null, 3, null]
登入後複製

分享JS的一些優雅寫法(reduce/map)

其中,map方法的參數是一個回呼函數,它接收一個參數:目前元素(item)。回調函數的傳回值會作為新數組的元素。在回呼函數中,我們判斷目前元素的name屬性是否等於'banana',如果是,則傳回目前元素的price屬性,否則傳回null。最後得到了一個新數組,其中只有name屬性為'banana'的元素的price屬性有值,其他元素的price屬性為null。

2、可以使用map方法來取得物件陣列中根據某一key值得到的元素的price屬性,可以使用find方法來實作。

例如,假設有以下物件陣列:

const arr = [
  { name: 'apple', price: 2 },
  { name: 'banana', price: 3 },
  { name: 'orange', price: 4 },
];
登入後複製
登入後複製
登入後複製

如果要根據name屬性取得price屬性,可以使用下列程式碼:

const banana = arr.find(item => item.name === 'banana');if (banana) {
  console.log(banana.price); // 3}复制代码
登入後複製

分享JS的一些優雅寫法(reduce/map)

其中,find方法的參數是一個回呼函數,它接收一個參數:目前元素(item)。回調函數需要傳回布林值,表示目前元素是否符合條件。 find方法會傳回符合條件的第一個元素,如果沒有符合條件的元素,則傳回undefined。

在回呼函數中,我們判斷當前元素是否banana,如果是,則傳回目前元素。最後得到了一個對象,其中只有name屬性為'banana'的元素的price屬性有值,其他元素price屬性為undefined。我們可以使用if語句來判斷是否找到了符合條件的元素,如果找到了,則輸出它的price屬性。

推薦學習:《

JavaScript影片教學

#

以上是分享JS的一些優雅寫法(reduce/map)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:juejin.im
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板