web-dev-qa-db-ja.com

Lodashマップと一意の戻り値

Lodash変数があります。

var usernames = _.map(data, 'usernames');

以下を生成します。

[
    "joebloggs",
    "joebloggs",
    "simongarfunkel",
    "chrispine",
    "billgates",
    "billgates"
]

一意の値の配列のみを返すようにlodashステートメントを調整するにはどうすればよいですか?例えば.

var username = _.map(data, 'usernames').uniq();
15
MindVox

多くの方法がありますが、uniq()は配列のメソッドではなく、lodashのメソッドです。

_.uniq(_.map(data, 'usernames'))

または:

_.chain(data).map('usernames').uniq().value()

(2番目はテストされておらず、おそらく間違っていますが、近いです。)

コメントで述べたように、実際のデータisに応じて、最初にusernamesを抜き出さずにこれをすべて一度に行うことができます。

48
Dave Newton

uniqBy関数を使用することもできます。この関数は、配列内の各要素に対して呼び出されるiterateeも受け入れます。以下の2つの引数を受け入れます。idはiterateeパラメーターです。

_.uniqBy(array, 'id')
0
Alex Trn