javascript - 将对象替换为 AngularJS 中数组中的现有值

标签 javascript angularjs arrays

我有一个 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);
}

然后您可以将新的插入。

<小时/>

您还应该清理您的编码风格:不要混合法语和英语,并在您的函数中使用 camelCasesnake_case以提高可读性。

关于javascript - 将对象替换为 AngularJS 中数组中的现有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42333936/

相关文章:

javascript - FileReader 异步读取方法是否会阻塞主线程?

使用 reduce 函数的 javascript

javascript - 使用 Angularjs 和 .htaccess 重新加载页面时未获取 JS/CSS 文件链接

arrays - 生成一个在 Angular 2 中不重复的数组

c - 大小为 1 的数组与指向结构的指针

javascript对象属性/数组操作

javascript - 在 Protractor 上测试的文件在哪里配置?

javascript - 更改选择字段中 select2 选择的背景颜色

angularjs - Spring Oauth2 SSO - 无法从 Auth 服务器注销

javascript - Angular.js - Facebook 页面提要,在卡片列表中显示帖子,并带有全屏图片库。有人可以帮我吗?