使用 linq.js 从对象数组中删除元素

问题描述 投票:0回答:2

我不久前开始使用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
}
javascript angularjs linq.js
2个回答
2
投票

使用

linq.js
,您需要转换数据
ToDictionary
,使用
Single
enumerable
获取想要的项目并删除该项目。

然后你必须通过可枚举的字典再次重建数组并选择数组。

瞧!

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>


1
投票
   //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;
          }
      }
    };

JSB在这里

© www.soinside.com 2019 - 2024. All rights reserved.