2016-08-01 3 views
6

私はLoDashを使って配列からオブジェクトを削除しようとしています。私はserver.jsでアレイからオブジェクトを削除するにはどうしたらいいですか?

(NodeJS)

var lodash = require('lodash')(); 

var rooms = [ 
    { channel: 'room-a', name: 'test' }, 
    { channel: 'room-b', name: 'test' } 
] 

は、2つのコマンドをしようとして行くと動作しません:にconsole.log(結果)中

var result = lodash.find(rooms, {channel: 'room-a', name:'test'}); 
var result = lodash.pull(rooms, lodash.find(rooms, {channel: 'room-a', name:'test'})); 

LodashWrapper { 
    __wrapped__: undefined, 
    __actions__: [ { func: [Function], args: [Object], thisArg: [Object] } ], 
    __chain__: false, 
    __index__: 0, 
    __values__: undefined } 

誰かが私を助けることができますか?ありがとうございました!

+1

私は疲労を避けたかった:P –

答えて

3
require('lodash')() 

()によって)lodash関数を呼び出すはundefinedをラップLoDashオブジェクトを作成します。

これはあなたが望むものではありません。静的メソッドを含むlodash関数自体が必要です。

これを削除します。

+0

はuoooWoww印象的な、私は多くの知識を持っていないが、それはただの詳細でした!だから私は自分のコードでうまくいくと思ったが、それは魅力的だった!大丈夫@スラックス!!!! –

+1

LoDashラッパーオブジェクト(チェーニング用)の詳細については、ドキュメントを参照してください。 – SLaks

6

このシナリオではreject()とします。少ないコード:

var result = _.reject(rooms, { channel: 'room-a', name: 'test' }); 
7

_.remove()が適しています。

var rooms = [ 
 
    { channel: 'room-a', name: 'test' }, 
 
    { channel: 'room-b', name: 'test' } 
 
]; 
 

 
_.remove(rooms, {channel: 'room-b'}); 
 

 
console.log(rooms); //[{"channel": "room-a", "name": "test"}]
<script src="https://cdn.jsdelivr.net/lodash/4.14.2/lodash.min.js"></script>

関連する問題