web-dev-qa-db-ja.com

あるアレイが別のアレイのサブセットであるかどうかをどのようにテストしますか?

この種のロジックを提供する最良の(最もクリーンな)方法は何ですか?

var colors = ["red","white","blue"];

logic(colors,["red","green"]); //false
logic(colors,["red"]); //true
logic(colors,["red","purple"]); //false
logic(colors,["red","white"]); //true
logic(colors,["red","white","blue"]); //true
logic(colors,["red","white","blue","green"]); //false
logic(colors,["orange"]); //false

おそらく nderscore.js

33
ThomasReggi

配列の各要素が一意であると仮定します。handの長さを両方の配列の共通部分の長さと比較します。それらが同じである場合、handのすべての要素もcolorsにあります。

var result = (hand.length === _.intersection(hand, colors).length);

[〜#〜] demo [〜#〜]

40
Felix Kling

多分 difference はあなたが探しているものです:

_(hand).difference(colors).length === 0
18