36

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

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吗?

4

2 回答 2

44

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

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

演示

于 2013-01-02T22:21:18.333 回答
20

也许差异是您正在寻找的:

_(hand).difference(colors).length === 0
于 2013-01-02T22:20:03.890 回答