我們可以嘗試的把部分的for迴圈使用.map()
、.filter()
、.reduce()
進行合理靈活使用。確保我們減少**量的同時更容易閱讀,讓我們**更加具有藝術感。
現在來分析兩個陣列的方法是乙個非常使用的js開發者工具:.some()
和.find()
此陣列方法可幫助您確定其乙個或多個值是是否與您查詢的內容相對應。我們來講述乙個例子來說明。
// 是否會員 ismember: true-是,fasle-否
var users = [,,
,];
需求:現在有乙個會員體系,我想從中知道使用者是遊客還是會員。
var listhasmembers = false;
users.foreach(e => }); console.log(listhasmembers) // > true
我們嘗試使用.some()
來實驗一下。
var listhasmembers2 = users.some(e => );
console.log(listhasmembers2)
// > true
傳遞.some
乙個函式作為引數。該函式正對陣列中的每個值執行。然後,可以看到該值是否符合您編寫的條件。該函式必須返回乙個布林值。一旦true
歸還,.some()
本身就會歸還true
。如果沒有乙個值,則在您的條件下進行處理時,返回true
(如果他們全部都返回false
),.some()
則將返回false
。
注意:一旦正如注釋中所指出的那樣,您知道還可以使用來檢查陣列的每個值是否都符合您的條件true
返回單個值,.some()
將停止檢查其他陣列值。在上面的例子中,該功能僅僅執行了兩次,第二個使用者冷是會員使用者。無需檢查其他使用者。如果某些陣列值與要查詢的內容相對應,.some()
則將返回ture
,反之則反。
.every()
。它的工作方式完全一樣.some()
,但是true
僅在每次匹配時才返回。
這個陣列方法完全按照它說的去做:它找到您要尋找的東西。簡而言之,.find()
將返回與傳遞的條件相對應的第乙個值。讓我們看看使用與之前相同資料的資料。
// 是否會員 ismember: true-是,fasle-否
var users = [,,
,];
與之前相同,只是這次我們不問自己是否有會員在我們的行列中,而是希望獲得該會員的詳情!讓我們使用以下命令輸出所需的值.find()
:
const firstuser = users.find( e => e.ismember)
console.log(firstuser)
// > object
上面的**與完全相同.some()
,唯一的區別是我們將其更改some
為find
。但是現在,它不返回布林值,而是返回列表中的第乙個會員。
特別說明:如果找不到匹配項,.find()
將返回第乙個匹配。如果更多的值符合您的條件,那將無關緊要。只返回匹配第乙個。如果您需要所有匹配項的列表,你需要使用.filter
來代替.find()
.find()
將返回undefined
。
// 是否會員 ismember: true-是,fasle-否
var users = [,,
,]; const firstuser = users.find( e => e.ismember) console.log(firstuser) // > undefined
使用.find()
和.some()
代替.for
或代替常見的迴圈.foreach()
不僅使您的**更短,而且使您的目的更清晰。迴圈可用於執行任何操作,但使用的.find()
狀態是您正在尋找乙個特定的陣列項。至於.some()
,您正在清楚地檢查陣列是否包含符合您需要的專案。
讓您的**更清晰!使用相關時.find()
和.some()
。
對了,希望您學到了一些新知識。與您的其他開發人員共享知識!讓**更簡單。
keep coding!
掘金者說 第1期 個人性格
在軟體開發過程中,人們很少注意個人性格問題。每個行業的工程人員都了解其工作用的工具及材料的各種限制。如果是電器工程師,就該知道各種金屬的電導率,以及電壓表的上百種用法 如果是建築工程師,就該知道木材 混凝土和鋼鐵的承載量。假如你是軟體工程師,基本的建造材料就是你的聰明才智,主要工具就是你自己。建築工...
js知識點 掘金 JS基礎筆記(一)
基礎 一 提公升 宣告提公升 console.log r var r hello world 輸出undefined 上述 等價於 var r console.log r r hello world 之所以會輸出 undefined,原因就在於宣告的提公升,var 變數會提公升到頂部進行宣告。再舉個...
JS練習題 顯示登入者相關好友
1 public w3c dtd xhtml 1.0 transitional en 2333 3435 3637 38 uid zhangsan 39 db new mysqli localhost root aaaaa 40 mysqli connect error or die 連線失敗!41...