簡體   English   中英

我如何比較Array.find和foreach等迭代器?

[英]How can i compare Array.find with iterators like for foreach etc..?

我經常使用for loop, forEach loop, Array.map等來迭代數組。 我知道我們也可以使用Array.find循環數組,並且它還可以根據條件返回數組中匹配的值:

我使用Array.find()for循環迭代對象數組,如下所示

使用Array.find:

[{
    name: "John"
}, {
    name: "Cannady"
}, {
    name: "Sherlock"
}].find(function(oArrayObject) {
    console.log(oArrayObject)   
});

在控制台上輸出:

{name: "John"}
{name: "Cannady"}
{name: "Sherlock"}

使用for循環:

    var aNames=[{
           name: "John"
        }, {
            name: "Cannady"
        }, {
            name: "Sherlock"
        }]

for(var i=-0;i<aNames.length;i++){
console.log(aNames[i]);
}

在控制台上輸出:

{name: "John"}
{name: "Cannady"}
{name: "Sherlock"}

兩種代碼都做同樣的事情。

Array.find()與for循環相比有什么優點?

哪個提供了更好的性能?

請在性能,用法,內部功能等方面向我說明array.find和其他迭代器之間的區別...

Array#find用於查找數組中與謂詞匹配的項,然后將其返回。 Array.find返回時,循環結束。 在性能方面,如果要查找的項不是最后一個,則不必迭代整個數組。

 var result = [{ name: "John" }, { name: "Cannady" }, { name: "Sherlock" }].find(function(o) { return o.name.startsWith('Ca'); }); console.log(result); 

有很多迭代數組的方法( 請參閱mdn中的array ),例如: forEachmapfilterreducereduceRightsomeeveryfindfindIntex

除了Array#forEach ,它們中的大多數都提供了迭代本身之外的其他功能。

find()方法返回滿足提供的測試功能的數組中第一個元素的值。 否則返回undefined。

find函數使用回調函數,例如:

function isBigEnough(element) {
   return element >= 15;
}
[12, 5, 8, 130, 44].find(isBigEnough);

find方法對數組中存在的每個元素執行一次回調函數,直到找到其中回調返回真值的元素為止。 如果找到這樣的元素,則find立即返回該元素的值。

forEachfor相比, find函數的性能有所不同,可以為O(1)O(n)或更小,因為forEachfor復雜度始終為 O(n)因為您必須迭代所有array

當需要觸摸或檢查集合中的每個對象時,使用for / forEach進行迭代。 find方法是當您知道要查找的內容時,只需要快速搜索集合以查看是否存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM