[英]Javascript break/return function within function
我一直對處理此問題的最佳方法感到困惑。 我過去一直使用的方法,但似乎必須有一個更好的方法。
下面我有一段代碼,我想返回getData
函數的item
。 問題在下面的示例中,它返回的是forEach
函數而不是getData
函數。
function getData() {
var array = ["element1","element2"];
array.forEach(function (item) {
if (item == "element2") {
return item;
}
});
}
我一直在做這樣的事情來克服這個問題。
function getData() {
var array = ["element1","element2"];
var returnValue;
array.forEach(function (item) {
if (item == "element2") {
returnValue = item;
}
});
if (returnValue) {
return returnValue;
}
}
有沒有更好的方法來解決這個問題? 好像這些額外的4行代碼只會在我的代碼中造成混亂和混亂。
您可以使用Array#some
some()
方法測試數組中的某些元素是否通過提供的函數實現的測試。
function getData() {
var array = ["element1","element2"];
var returnValue;
array.some(function (item) {
if (item == "element2") {
returnValue = item;
return true;
}
});
return returnValue;
}
或者,如果您使用ES6,請使用Array#find
如果數組中的元素滿足提供的測試功能,則
find()
方法將在數組中返回一個value
。 否則returned
undefined。
function getData() {
var array = ["element1","element2"];
return array.find(item => item == "element2");
}
您可以使用Array#indexOf
輕松地做到這一點:
function getData() {
var array = ["element1","element2"];
var index = array.indexOf("element2");
return index === -1 ? null : array[index];
}
在這種情況下,它之所以有效,是因為您要查找的是與您所擁有的匹配===
。 更一般的情況是Array#find
,這是ES2015的事情,但是您可以輕松地對其進行填充/填充以用於ES5及以下版本:
function getData() {
var array = ["element1","element2"];
return array.find(function (item) {
return item == "element2";
});
}
...可讓您根據更復雜的條件指定匹配項。
您可以只使用indexOf:
return array[array.indexOf("element2")];
如果找不到該值,則索引將為-1。 並且任何數組的索引-1都是undefined
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.