angularjs移除阵列特定元素dosen'不起作用
angularjs remove array specific element dosen't work
如果我将两个元素推入另一个array
,然后尝试移除第一个元素(单击第一个按钮),则第二个元素将被移除。为什么?
演示
$scope.removeFromList = function(p) {
$scope.found = $.grep($scope.data2, function(e) {
return e.ID == p.ID;
});
var index = $scope.data2.indexOf($scope.found);
$scope.data2.splice(index, 1);
}
indexOf适用于数组,而不适用于Object。它返回-1,因此总是取最后一个元素。
试试这个:
$scope.removeFromList = function (p) {
var index = $scope.data2.map(function(e) { return e.ID;}).indexOf(p.ID);
if(index >= 0)
$scope.data2.splice(index, 1);
}
之所以会发生这种情况,是因为indexof不用于查找对象并始终返回-1索引,这反过来又会删除第一个元素,您总是需要创建自己的索引
var index = myIndexOf($scope.data2,$scope.found);
function myIndexOf(arr,o) {
for (var i = 0; i < arr.length; i++) {
if (arr[i].x == o.x && arr[i].y == o.y) {
return i;
}
}
return -1;
}
Plunker
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Recaptcha在IE7和IE8中不起作用
- Ember Data DS.Model's set函数不起作用
- JsFiddle上的鼠标事件不起作用
- 我的AngularJS表达式没有'不起作用
- 点击按钮输入不起作用
- 面向对象的Javascript代码在IE7中不起作用
- 分部隐藏在jquery中不起作用
- 在phonegap应用程序内部重定向不起作用
- Array.length似乎不起作用;console.log则显示其他情况
- $ionicplatform内的$scope不;不起作用
- 我的javascript for循环不起作用
- Meteor-添加用户自定义字段的方法不起作用
- angularjs移除阵列特定元素dosen'不起作用
- Gulp.watch-dosen;当我使用intellij思想进行开发时,它不起作用
- 未知错误如果状态dosen'不起作用
- 我的javascript验证我的电子邮件,dosen'不起作用