我有一个 ng-repeat,每个项目都有一个选择。
用户可以选择一个值(触发将对象推送到数组中的函数),但他们也可以改变主意,在这种情况下,代码只是使用新值推送第二个对象,复制第一个对象.
我怎样才能真正删除现有值,在每次 ng-change 时只留下最后一个值?
这是我的 HTML:
<select ng-change="insertproduct(pa.nom, basket)" ng-model="basket">
<option ng-repeat="select in numberofproducts">{{select}}</option>
</select>
还有我的 JavaScript:
$scope.numberofproducts = [1,2,3,4,5,6,7,8,9,10]
$scope.singleorder = [];
$scope.insertproduct = function(nom, basket){
$scope.numero = {
'producte': nom,
'numero': basket
};
$scope.singleorder.push($scope.numero);
console.log($scope.singleorder);
}
这个想法是创建一个条件,在该条件下,如果数组包含参数“producte”等于新对象的对象,则删除现有对象并推送新对象。
有什么建议吗?
最佳答案
首先,使用findIndex方法检查 singleorder
数组中是否已存在具有相同属性的对象。
function duplicateOrder(order) {
return order.producte === nom;
}
var index = $scope.singleorder.findIndex(duplicateOrder);
注意:browser support对于findIndex来说是有限的; Internet Explorer 不支持它。
然后使用 splice 删除该项目:
if(index > -1){
$scope.singleorder.splice(index, 1);
}
然后您可以将新的插入。
<小时/>您还应该清理您的编码风格:不要混合法语和英语,并在您的函数中使用 camelCase 或 snake_case以提高可读性。
关于javascript - 将对象替换为 AngularJS 中数组中的现有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42333936/