Removing element from object array with linq.js

喜你入骨 提交于 2020-01-05 05:56:58

问题


I have started using linq.js a while ago, and found it very useful, but there's an issue I really can't solve somehow. I'm using angular, and I have a simple json array with the following structure:

[
  { id: 1, name: 'John', age: 20},
  { id: 2, name: 'Josh', age: 34},
  { id: 3, name: 'Peter', age: 32},
  { id: 4, name: 'Anthony', age: 27},
]

I'm looking for the best (or at least a working) example wich could help me understanding how to remove an element of this array by the id property. I have found some examples with simple array (but not with json elements), those haven't helped me too much.

I have the following function to do the remove part:

this.removePerson = function(id) {
   //here's how I access the array
   vm.people
}

回答1:


With linq.js, you need do convert the data ToDictionary, get the wanted item with Single from enumerable and remove the item.

Then you have to rebuild the array again from dictionary via enumerable and select to array.

Et voilà!

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>



回答2:


   //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;
          }
      }
    };

JSBin here



来源:https://stackoverflow.com/questions/39385947/removing-element-from-object-array-with-linq-js

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!