![](/img/trans.png)
[英]how can I use Array.find() function to edit name and age properties inside specific object
[英]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 ),例如: forEach
, map
, filter
, reduce
, reduceRight
, some
, every
, find
和findIntex
。
除了Array#forEach
,它們中的大多數都提供了迭代本身之外的其他功能。
find()方法返回滿足提供的測試功能的數組中第一個元素的值。 否則返回undefined。
find
函數使用回調函數,例如:
function isBigEnough(element) {
return element >= 15;
}
[12, 5, 8, 130, 44].find(isBigEnough);
find方法對數組中存在的每個元素執行一次回調函數,直到找到其中回調返回真值的元素為止。 如果找到這樣的元素,則find立即返回該元素的值。
與forEach
和for
相比, find
函數的性能有所不同,可以為O(1)
或O(n)
或更小,因為forEach
和for
復雜度始終為 O(n)
因為您必須迭代所有array
。
當需要觸摸或檢查集合中的每個對象時,使用for / forEach進行迭代。 find方法是當您知道要查找的內容時,只需要快速搜索集合以查看是否存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.