假設我有一個方法, 目的是從陣列中找出特定的值並且輸出, 但考量到執行的效率, 所以希望在值已經找到的情況下中斷forEcah的執行, 那我可以怎麼做!?
陣列:
[
{
"id": "1",
"name": "andy"
},
{
"id": "2",
"name": "bob"
}
]
|
方法:
function findPerson(employee, name){
let id;
employee.forEach(function (element, index, arr) {
if(element.name === name ){
console.log(`found ${name}`);
id = element.id;
//中斷
}
});
return id;
}
|
實際上forEach 沒辦法像其他語言透過 break 或是 return 來中斷, 但若是硬要作也可以, 只要拋個exception就能搞定(不建議)
其實要走訪陣列中的元素不一定要用forEach, 也可以使用 every 或是 some 來達到目的, 跟 forEach 唯一不同的是 every\some 可以透過 return 來中斷 callback function
every:
function findPerson(employee, name){
let id;
employee.every(function (element, index, arr) {
if(element.name === name ){
console.log(`found ${name}`);
id = element.id;
return false
}
});
return id;
}
|
some:
function findPerson(employee, name){
let id;
employee.some(function (element, index, arr) {
if(element.name === name ){
console.log(`found ${name}`);
id = element.id;
return true
}
});
return id;
}
|
留言
張貼留言