1. 程式人生 > >ES6內置方法find 和 filter的區別在哪

ES6內置方法find 和 filter的區別在哪

== find 繼續 9.png turn con bre 對象 AR

find 和 filter 為ES6中過濾查找的一個內置方法

假定有一個對象數組,根據指定對象的條件找出數組中符合的對象,要想查找出name:‘Cady‘的項

users= [
    {name:‘Marry‘},
    {name:‘Cady‘,type:‘person‘},
    {name:‘Cady‘},
    {name:‘Tom‘},
    {name:‘Lucy‘},
]

  

1、在說ES6用法前我們先來看看ES5的寫法
var user;
for (let i = 0; i < users.length; i++) {
if(users[i].name === ‘Cady‘){
    user = users[i]
    break;
    }
}
console.log(‘user‘,user)

會輸出,這裏不會輸出全部滿足條件的項,是因為用了break;當找到滿足條件時中止執行將不再往下執行;

技術分享圖片

2、ES6寫法:

// es6寫法

user = users.find(function(user){
    return user.name === ‘Cady‘
})

console.log(‘find方法:‘,user)

user = users.filter(function(user){
    return user.name === ‘Cady‘
})

console.log(‘filter方法:‘,user)

技術分享圖片

這個時候,你會發現,find當找到滿足條件的項時就不再往下執行,而filter會繼續往下執行找出所有滿足條件的

總結:find 和 filter 的用法都是一樣的,並且不改變原數組的方法,但find只查出第一個符合條件的結果像例子裏是直接返回了一個對象而不是數組,而filter返回全部結果仍然是數組。

ES6內置方法find 和 filter的區別在哪