我有一个javascript数组如下:
$scope.products = [
{id:'1', name:'IPhone6', price: '1,000 AED', quantity: '2'},
{id:'2', name:'Samsung Mini', price: '750 AED', quantity: '1'},
{id:'3', name:'Dell Laptop', price: '1700 AED', quantity: '3'},
{id:'4', name:'HCL Monitor 7"', price: '650 AED', quantity: '7'},
];
使用ng-repeat
Angular js函数显示上面的数组。
我正在调用一个remove函数并将id
作为参数传递。如何从数组中删除特定元素?
$scope.products.slice($id, 1)
不是必需的。我必须删除id?请指教。
答案 0 :(得分:2)
这应该有效:
// id = '3'
$scope.products = $scope.products.filter(function (p) { return p.id !== id });
答案 1 :(得分:1)
检查拼接方法
您可能希望将带有id的元素的索引传递给remove函数,为此可以描述getIndexBy函数
Array.prototype.getIndexBy = function (name, value) {
for (var i = 0; i < this.length; i++) {
if (this[i][name] == value) {
return i;
}
}
}
并像
一样使用它index=products.getIndexBy("id", 3)
其中3是您提供的ID。 然后,您可以在splice方法中使用此索引来删除特定元素。
假设您要按索引取下元素。
答案 2 :(得分:1)
您可以定义utility function:
(function(window) {
var utility = window.utility|| (window.utility= {});
function remove(items, fn) {
var toRemove = [];
angular.forEach(items, function(item, i) {
if (fn(item)) {
toRemove.push(i);
}
});
angular.forEach(toRemove, function(index) {
items.splice(index,1);
});
}
angular.extend(utility, {
'remove': remove
});
})(window);
要使用此功能,请传递一个项目数组作为第一个参数,并将谓词函数作为第二个参数传递。谓词返回true的所有项目都将从数组中删除该项目:
示例:
删除名为“john”的所有用户:
utility.remove($scope.users, function(user) {
return user.name == 'john';
});
删除ID为3的用户:
utility.remove($scope.users, function(user) {
return user.id == 3;
});
答案 3 :(得分:1)
在这样的点击操作中使用$ index
ng-click='slice($index);'
和你的功能一样
$scope.slice = function(element){
$scope.friends.splice(element, 1);
}
或者通过这个例子:
HTML代码
<ul>
<li ng-repeat="product in products" ng-click='slice($index);'>
[{{$index + 1}}] {{product.name}}
</li>
</ul>
Javascript代码
$scope.products = [
{id:'1', name:'IPhone6', price: '1,000 AED', quantity: '2'},
{id:'2', name:'Samsung Mini', price: '750 AED', quantity: '1'},
{id:'3', name:'Dell Laptop', price: '1700 AED', quantity: '3'},
{id:'4', name:'HCL Monitor 7"', price: '650 AED', quantity: '7'},
];
$scope.slice = function(element){
$scope.friends.splice(element, 1);
}