1

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 に感謝します。あなたの答えは正しかったです。バインダーの後にかなり頭が死んでいて、明らかなことはわかりませんでした。

4

1 に答える 1

4
  1. 関数_.toArrayの最初の引数に on は必要ありませんwithout
  2. の 2 番目 (およびそれ以上) の引数withoutは配列ではなく、値の「リスト」です。

適切な呼び出しは次のようになります。

var newArray = _.without(['1', '2', '3'], '1', '3');

結果は次のようになります。

['2']

あなたの場合、JSFiddle_.difference hereで見られるように使用する必要があります。

コードは次のとおりです。

var parsedID1 = [{id: '1', name: 'name1'}, {id: '2', name: 'name2'}];
var parsedID2 = [{id: '1', name: 'name1'}, {id: '3', name: 'name3'}];

var someIds = _.pluck(parsedID1, 'id');
var otherIds = _.pluck(parsedID2, 'id');

console.log(someIds, otherIds);

var newArray = _.difference(someIds, otherIds);

console.log(newArray);
于 2013-03-18T04:20:05.687 に答える