如何测试一个数组是否是另一个数组的子集?

时间:2013-01-02 22:17:33

标签: javascript underscore.js

提供这种逻辑的最佳(最干净)方法是什么?

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

可能使用underscore.js

2 个答案:

答案 0 :(得分:40)

假设数组中的每个元素都是唯一的:将hand的长度与两个数组的交集长度进行比较。如果它们相同,hand中的所有元素也都在colors

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

DEMO

答案 1 :(得分:18)

也许difference正是您所寻找的:

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