Javascript 检查数组的每个元素是否在多个数组中
我很难找到解决办法 假设有6个颜色数组,每个数组中有1-3种颜色,颜色可以重复:Javascript 检查数组的每个元素是否在多个数组中,javascript,arrays,Javascript,Arrays,我很难找到解决办法 假设有6个颜色数组,每个数组中有1-3种颜色,颜色可以重复: ['white', 'blue'] ['green', 'yellow'] ['black'] ['yellow', 'blue', 'pink'] ['orange', 'red'] ['brown', 'white'] 用户输入6种颜色,例如:白色、蓝色、粉色、黑色、橙色、黄色。假设每个数组只能选择一种颜色,如何检查所有这些颜色是否都是数组的一部分,以及是否可以选择所有颜色 我希望我的问题可以理解 编辑:重新
['white', 'blue']
['green', 'yellow']
['black']
['yellow', 'blue', 'pink']
['orange', 'red']
['brown', 'white']
用户输入6种颜色,例如:白色、蓝色、粉色、黑色、橙色、黄色。假设每个数组只能选择一种颜色,如何检查所有这些颜色是否都是数组的一部分,以及是否可以选择所有颜色
我希望我的问题可以理解
编辑:重新表述问题
有6个颜色数组,如上所示,用户必须从每个数组中选择1个。假设用户提交的顺序与数组的顺序不同,如何检查用户的输入是否正确。这看起来像是一项递归作业(可能不是最有效但肯定是最简单的解决方案,如果数据如此之小,则无所谓): 请注意,它将同时改变
颜色
和输入
数组(每次调用检查
时,您必须复制它们)
实际上,这个问题和路径发现问题非常相似。这是一个暴力解决方案。有什么想法吗?只有两个带
if
的嵌套循环?这是家庭作业吗?听起来像是家庭作业。问题是颜色是重复的,每个数组只能选择一种颜色。不,不是家庭作业。这是一个在线游戏,我只是用颜色来简化问题。6种输入颜色中的每一种都必须来自不同的数组。问题是,我该如何检查这是一个问题,所以问题是检查是否存在一组颜色数组,使得每一个颜色数组和输入都有一个元素?
var check = function(input, colors) {
if (!input.length) {
return true;
}
var input_color = input.pop();
var ok = false;
for (var i = 0; i < colors.length; i++) {
var color = colors[i];
if (!color) {
break;
}
if (color.indexOf(input_color) !== -1) {
colors.splice(i, 1);
ok = check(input, colors);
if (!ok) {
colors.splice(i, 0, color);
} else {
break;
}
}
}
if (!ok) {
input.push(input_color);
}
return ok;
};
var colors = [
['white', 'blue'],
['green', 'yellow'],
['black'],
['yellow', 'blue', 'pink'],
['orange', 'red'],
['brown', 'white']
];
check(['white', 'blue', 'pink', 'black', 'orange', 'yellow'], colors);