我想避免id重复并使用push添加值

时间:2017-10-09 13:55:42

标签: javascript

控制器
$ scope.items = [
      {“id”:1,“itemname”:“name_1”,“comment”:“dsdsd”,“price”:5000},
      {“id”:1,“itemname”:“name_2”,“comment”:“dddd”,“price”:3000},
      {“id”:3,“itemname”:“name_3”,“comment”:“sdasd”,“price”:2000},
      {“id”:4,“itemname”:“name_4”,“comment”:“asdasd”,“price”:3000},
      {“id”:5,“itemname”:“name_5”,“comment”:“asdasd”,“price”:2000}
    ]

$ scope.addToCart =函数(项目){
cart.add(项目);
}

服务
    cartObj.cart.add =函数(项目){
      cartObj.cart.push(项目);
    };

<div ng-repeat="item in cart">
<div>id: {{item.id}}</div>
<div>itemname: {{item.itemname}}</div>
</div>

热门代码cart.html

<div ng-repeat="item in items">
<a ng-click="addToCart(item)">[ addcart ]</a>
</div>

热门代码index.html

示例OUTPUT
id 1
   name_1 5000
   name_2 3000
id 3
   name_3 2000
id 4
   name_4 3000
id 5
   name_5 2000

2 个答案:

答案 0 :(得分:0)

您可以在推送之前检查是否可以安全地推送到阵列。

if ($scope.items.indexOf(item) == -1) {
   $scope.items.push(item);
}

答案 1 :(得分:0)

在推送之前,您可以检查已经是具有该ID的项目。

let oldItem = $scope.items.find(elm => elm.id === item.id);
if(oldItem){
    //you can assign the properties of `item` to the one in the list
    Object.assign(oldItem, item);
}else{
    $scope.items.push(item);
}