Javascript 如何将一个数组中的元素与另一个数组中的元素进行比较

Javascript 如何将一个数组中的元素与另一个数组中的元素进行比较,javascript,arrays,Javascript,Arrays,如果choice数组中的choice对象未在任何结果中找到,则隐藏choice元素在本例中{“choice”:“f”}和{“choice”:“g”}在这三个结果中都不可用,因此我需要将其隐藏。我怎么做 {"choices":[ {"choice": "a"}, {"choice": "b"}, {"choice": "c"}, {"choice": "d"}, {"choice": "e"}, {"choice": "f"}, {"choi

如果
choice
数组中的
choice
对象未在任何
结果中找到,则隐藏
choice
元素在本例中
{“choice”:“f”}
{“choice”:“g”}
在这三个结果中都不可用,因此我需要将其隐藏。我怎么做

{"choices":[
    {"choice": "a"},
    {"choice": "b"},
    {"choice": "c"},
    {"choice": "d"},
    {"choice": "e"},
    {"choice": "f"},
    {"choice": "g"}
],
"results":[
    {"result":["a", "b", "c"]},             
    {"result":["a", "b", "d"]},
    {"result":["a", "b", "e"]},

我不确定您是否要求提供通用的实现思想,或者如何在javascript中实现它的指针。我同意这个大概的想法。您可以简单地使用存储所有可能的结果,然后迭代选择并检查每个选择是否在集合中。如果没有,您可以采取您想要的操作,比如隐藏它,不管这意味着什么。

您可以对data.choices使用
filter()
,然后
some()
includes()
检查结果数组中的某些对象中是否存在选择

var data={“choices”:[{“choice”:“a”},{“choice”:“b”},{“choice”:“c”},{“choice”:“e”},{“choice”:“f”},{“choice”:“g”},,“results”:[{“result”:[“a”,“b”,“c”]},{“result”:[“a”,“b”,“d”]},{“result
data.choices=data.choices.filter(函数(o,i){
var check=data.results.some(e=>e.result.includes(o.choice))
退货检查;
})

console.log(数据)
您可以从结果和筛选选项中收集所有值

var object={choices:[{choice:“a”},{choice:“b”},{choice:“c”},{choice:“e”},{choice:“f”},{choice:“g”}],result:[{result:[“a”,“b”,“c”]},{result:[“a”,“b”,“d”]},{result:[“a”,“b”,“e”]},
hash=Object.create(null),
诺丁=[];
object.results.forEach(函数(a){
a、 结果.forEach(函数(b){
hash[b]=true;
});
});
notIn=object.choices.filter(函数(a){
return!散列[a.choice];
});
控制台日志(notIn)
.as控制台包装{最大高度:100%!重要;顶部:0;}
var choices={choices:[{choice:“a”},{choice:“b”},{choice:“c”},{choice:“e”},{choice:“f”},{choice:“g”}],结果:[{result:[“a”,“b”,“c”]},{result:[“a”,“b”,“d”]},{result:[“a”,“b”,“e”]},
elems1=choices.results.map(v=>v.result).reduce((a,b)=>a.concat(b)),
过滤=[…新集合(elems1)];
choices.choices=choices.choices.filter(v=>filtered.some(c=>c==v.choice));

console.log(选项)隐藏是什么意思?你需要一个带有结果的数组吗?问题不清楚,发布的代码只是一些代码的一部分,没有开头和结尾(投票结束)。请添加一些解释,说明为什么/如何使用此代码帮助OP。这将有助于提供未来观众可以从中学习的答案。有关更多信息,请参阅。这似乎成了这里的主题,@Kinduser…@MikeMcCaughan实际上我不想写任何东西,因为这太复杂了。。。我将等待尼娜的回复,我将决定离开或删除我的答案。如果我决定离开它,我将描述每一步。@Kinduser,您可以使用
Set
,而不是映射值进行缩减。@NinaScholz您能给我举个例子吗?只是一个简短的例子。@Kinduser,请看我的es6示例。+1对于
Set
解决方案,可能选择
let
而不是
var
更适合完整的es6解决方案?@Anis,实际上范围不是问题。我完全同意,既然这不重要,我就认为在这种情况下,让它违约会更好。