gpt4 book ai didi

javascript - 检查数组的每个元素是否在多个数组中

转载 作者:行者123 更新时间:2023-11-29 14:56:02 25 4
gpt4 key购买 nike

我很难找到解决方案。

假设有 6 个颜色数组,每个数组有 1-3 种颜色,并且颜色可以重复:

['white', 'blue']
['green', 'yellow']
['black']
['yellow', 'blue', 'pink']
['orange', 'red']
['brown', 'white']

然后用户输入 6 种颜色,例如:白色、蓝色、粉色、黑色、橙色、黄色。我如何检查所有这些颜色是否都是数组的一部分,并且可以选择所有这些颜色,假设每个数组只能选择一个。

我希望我的问题是可以理解的。

编辑:改写问题

有 6 个颜色数组,如上所示,用户必须从每个数组中选择 1 个。我如何检查用户的输入是否正确,假设他提交的顺序不是数组的顺序。

最佳答案

这看起来像是递归的工作(可能不是最有效的,但绝对是最简单的解决方案,如果您的数据这么小,那应该无关紧要):

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);

请注意,它会改变 colorsinputs 数组(每次调用 check 时都必须复制它们)。

其实这个问题和寻路问题很相似。这是一个蛮力解决方案。

关于javascript - 检查数组的每个元素是否在多个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17734752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com