使用 linq.js 从对象数组中删除元素
Removing element from object array with linq.js
不久前我开始使用linq.js,发现它非常有用,但有一个问题我实在无法解决。我正在使用 angular,我有一个简单的 json 数组,其结构如下:
[
{ id: 1, name: 'John', age: 20},
{ id: 2, name: 'Josh', age: 34},
{ id: 3, name: 'Peter', age: 32},
{ id: 4, name: 'Anthony', age: 27},
]
我正在寻找可以帮助我理解如何通过 id
属性 删除此数组的元素的最佳(或至少是有效的)示例。我找到了一些简单数组的例子(但没有 json 元素),这些对我帮助不大。
我有以下功能来执行删除部分:
this.removePerson = function(id) {
//here's how I access the array
vm.people
}
//assuming your sample data
var vm = {};
vm.people = [
{ id: 1, name: 'John', age: 20},
{ id: 2, name: 'Josh', age: 34},
{ id: 3, name: 'Peter', age: 32},
{ id: 4, name: 'Anthony', age: 27},
];
//just loop through and delete the matching object
this.removePerson = function(id) {
for(var i=0;i<vm.people.length;i++){
if(vm.people[i].id == id){
vm.people.splice(i, 1);//removes one item from the given index i
break;
}
}
};
使用 linq.js
,您需要转换数据 ToDictionary
,使用 Single
从 enumerable
获取想要的项目并删除该项目。
然后你必须通过可枚举和select从字典重建数组。
瞧瞧!
var data = [{ id: 1, name: 'John', age: 20}, { id: 2, name: 'Josh', age: 34}, { id: 3, name: 'Peter', age: 32}, { id: 4, name: 'Anthony', age: 27}],
enumerable = Enumerable.From(data),
dictionary = enumerable.ToDictionary();
dictionary.Remove(enumerable.Single(s => s.id === 3));
console.log(dictionary.ToEnumerable().Select(s => s.Key).ToArray());
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/linq.js/2.2.0.2/linq.js"></script>
不久前我开始使用linq.js,发现它非常有用,但有一个问题我实在无法解决。我正在使用 angular,我有一个简单的 json 数组,其结构如下:
[
{ id: 1, name: 'John', age: 20},
{ id: 2, name: 'Josh', age: 34},
{ id: 3, name: 'Peter', age: 32},
{ id: 4, name: 'Anthony', age: 27},
]
我正在寻找可以帮助我理解如何通过 id
属性 删除此数组的元素的最佳(或至少是有效的)示例。我找到了一些简单数组的例子(但没有 json 元素),这些对我帮助不大。
我有以下功能来执行删除部分:
this.removePerson = function(id) {
//here's how I access the array
vm.people
}
//assuming your sample data
var vm = {};
vm.people = [
{ id: 1, name: 'John', age: 20},
{ id: 2, name: 'Josh', age: 34},
{ id: 3, name: 'Peter', age: 32},
{ id: 4, name: 'Anthony', age: 27},
];
//just loop through and delete the matching object
this.removePerson = function(id) {
for(var i=0;i<vm.people.length;i++){
if(vm.people[i].id == id){
vm.people.splice(i, 1);//removes one item from the given index i
break;
}
}
};
使用 linq.js
,您需要转换数据 ToDictionary
,使用 Single
从 enumerable
获取想要的项目并删除该项目。
然后你必须通过可枚举和select从字典重建数组。
瞧瞧!
var data = [{ id: 1, name: 'John', age: 20}, { id: 2, name: 'Josh', age: 34}, { id: 3, name: 'Peter', age: 32}, { id: 4, name: 'Anthony', age: 27}],
enumerable = Enumerable.From(data),
dictionary = enumerable.ToDictionary();
dictionary.Remove(enumerable.Single(s => s.id === 3));
console.log(dictionary.ToEnumerable().Select(s => s.Key).ToArray());
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/linq.js/2.2.0.2/linq.js"></script>