Javascript 只按一个项目,而不是按多个对象

Javascript 只按一个项目,而不是按多个对象,javascript,arrays,angularjs,ionic,Javascript,Arrays,Angularjs,Ionic,我试图将一个新项目推送到favlist中,我使用了for循环来检查favlist中是否已经存在该项目 但是,不是一次推送新项目,而是重复推送新项目的数量 解决这个问题的最好办法是什么 提前谢谢 $scope.favlist=JSON.parse($window.localStorage.getItem(“favlist”); console.log($scope.favlist); $scope.toggleStar=功能(项目){ item.star=!item.star; console.

我试图将一个新项目推送到favlist中,我使用了for循环来检查favlist中是否已经存在该项目

但是,不是一次推送新项目,而是重复推送新项目的数量

解决这个问题的最好办法是什么

提前谢谢


$scope.favlist=JSON.parse($window.localStorage.getItem(“favlist”);
console.log($scope.favlist);
$scope.toggleStar=功能(项目){
item.star=!item.star;
console.log(项);//对象
var favlistcontent=$window.localStorage.getItem(“favlist”);
console.log(favlistcontent);//字符串
如果(favlistcontent的类型!=='string'){
$scope.favlist=[];
$window.localStorage.setItem(“favlist”,JSON.stringify($scope.favlist));
}
$scope.favlist=JSON.parse($window.localStorage.getItem(“favlist”));
console.log($scope.favlist);//对象
console.log($scope.favlist.length);
console.log(angular.equals($scope.favlist[0],item));//true

对于(i=0;i您需要在找到相等项后中断循环,否则它将继续并在选中不相等项时添加该项

var duplicate = false;


for (i = 0; i < $scope.favlist.length; i++) {
    if (angular.equals($scope.favlist[i], item)) {
        console.log("item already exists");
        //break loop here
        duplicate = true;
        break;
    }

}

if (!duplicate){
    $scope.favlist.push(item);
    $window.localStorage.setItem("favlist", JSON.stringify($scope.favlist));
}
var duplicate=false;
对于(i=0;i<$scope.favlist.length;i++){
if(角度等于($scope.favlist[i],项目)){
console.log(“项已存在”);
//在这里中断循环
重复=正确;
打破
}
}
如果(!重复){
$scope.favlist.push(项目);
$window.localStorage.setItem(“favlist”,JSON.stringify($scope.favlist));
}

解决此问题的最佳方法是使用:

if($scope.favlist.indexOf(item)=-1){
//这个项目没有重复
$scope.favlist.push(项目);
$window.localStorage.setItem(“favlist”,JSON.stringify($scope.favlist));

}
你能告诉我们favlist和item的值吗?现在是2,item只有一个对象!(我添加了额外的代码)该死的:D我正要回答同样的问题!你比我快了。投票给这个答案。
var duplicate = false;


for (i = 0; i < $scope.favlist.length; i++) {
    if (angular.equals($scope.favlist[i], item)) {
        console.log("item already exists");
        //break loop here
        duplicate = true;
        break;
    }

}

if (!duplicate){
    $scope.favlist.push(item);
    $window.localStorage.setItem("favlist", JSON.stringify($scope.favlist));
}