2016-09-08 10 views
1

少し前にlinq.jsを使用し始めましたが、非常に便利でしたが、何とか解決できない問題があります。私は角使っている、と私は、次の構造を持つ単純なJSON配列があります。私は最高の(あるいは少なくとも作業)を探していますlinq.jsを使用したオブジェクト配列からの要素の削除

[ 
    { 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要素ではない)でいくつかの例を見つけましたが、それらは私をあまり助けてくれませんでした。

私は削除部分行うには、次の機能があります:あなたは、linq.js

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

答えて

2

をデータToDictionaryを変換しないする必要が、enumerableからSingleで指名手配アイテムを取得し、アイテムを削除します。

その後、辞書から再び列挙型を介して配列を再構築し、配列に選択する必要があります。

Etvoilà!

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

JSBin here

+0

しかし、私はその可能ならばlinq.jsの問題を解決したいのですが、誰がすぐに応答しない場合、私は受け入れるだろう、あなたの解決のために非常に便利な:)をありがとうあなたの答えは別の方法であっても私の問題を解決しました。 –

+0

彼らのメソッドでは問題ではありませんが、私は上記のコードと似たようなことをしています。複雑な機能やブラウザに依存するコードについては、ライブラリに固執する必要があります。 。 –

+0

ライブラリを使用しているこの小さなコードは不要です –

関連する問題