刚刚开始使用Angular我已经有点挣扎了,现在像foreach循环一样简单似乎很容易吗?如果找到一个元素,则返回false,不要执行任何操作。
$scope.addFav = function($text, $link, $icon)
{
var $favlist = $scope.favorites;
$favlist.forEach(function(element, index, array) {
console.log(element.name);
console.log($text);
if (element.name == $text)
{
console.log("Found");
return false;
}
});
$favlist.unshift({href: $link, name: $text, icon:$icon});
if($favlist.length > 5)
$favlist.pop();
$scope.favorites = $favlist;
return false;
};
我的用例
<i class="fa fa-star-o" ng-click="addFav(item.name, item.href, item.icon);"
我的问题是我哪里出错了?控制台记录“发现”很好,但它不会停止其余部分。
答案 0 :(得分:1)
通过返回forEach
内部回调不会阻止外部代码执行。在这种情况下,最好使用Array.prototype.some
方法检查数组是否包含必要的值,然后使用简单的if
块返回或继续。
$scope.addFav = function ($text, $link, $icon) {
var $favlist = $scope.favorites,
found = $favlist.some(function (element, index, array) {
return element.name == $text;
});
if (found) {
return false;
}
$favlist.unshift({
href: $link,
name: $text,
icon: $icon
});
if ($favlist.length > 5) $favlist.pop();
$scope.favorites = $favlist;
return false;
};