underscore.js ライブラリで _.without メソッドと _.difference メソッドを使用しようとしていますが、うまくいきません。
ここにいくつかのコードがあります。
var someIds = _.pluck(parsedID1, 'id');
var otherIds = _.pluck(parsedID2, 'id);
ここから問題が始まります。someId のリストから otherId をすべて削除したいと考えています。したがって、ウェブサイトによると、2 つのオプションがあります。_。それなし。私はそれらをそのように使用します...
var newArray = _.without(_.toArray(someIds), _.toArray(otherIds));
私も _.difference でこれをやろうとしましたが、最初の引数のコピーを関数に返す以外に何かをするメソッドを取得できないようです。_.toArray() を使用せずに引数を関数に渡そうとしましたが、同じことが起こります。以前にこのエラーに遭遇したことはありますか?
編集:
以下に提案されている方法を試しました。これを修正することを期待して、さらにいくつかのコードを提供します。
引数として渡す配列は、次の形式です。
var array = ['100004191488120', '100004191488321'];
_.difference に渡すときは、次のようにします。
var newArray = _.difference(someIds, otherIds);
someIds の長さが 657 で、otherIds が 57 の場合、600 の ID の結果が得られるはずです。代わりに、最初の引数の長さが何であれ、657 という結果が得られます。
編集2:解決
私は問題が何であるかを理解しました.すべての欲求不満の後、問題は私が渡していた違いの2番目の引数にありました.
私は db クエリを実行して、次のようなリストを取得していました。
[{ _id: 514721152222111116666777, facebook: { id: '123456789' } },
{ _id: 514721152222111116666778, facebook: { id: '12345678' } },]
これらの結果を受け取った後、Facebook ID を取得したかったので、次のようにしました。
var array = _.pluck(users, 'facebook.id');
それが問題でした。その抜き取りが未定義のリストを私に送り返していたのです。代わりに、次のように、1 つではなく 2 つのプラッキングを行う必要がありました。
var temp = _.pluck(users, 'facebook');
var arrayId = _.pluck(temp, 'id');
_.without && _.difference の違いに関する知識を落としてくれた @ZenMaster に感謝します。あなたの答えは正しかったです。バインダーの後にかなり頭が死んでいて、明らかなことはわかりませんでした。