Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript检查数组中存在的元素_Javascript_Arrays_Loops_Sorting_Nested Loops - Fatal编程技术网

使用Javascript检查数组中存在的元素

使用Javascript检查数组中存在的元素,javascript,arrays,loops,sorting,nested-loops,Javascript,Arrays,Loops,Sorting,Nested Loops,我想检查一个数组中的元素是否存在于另一个数组中。如果存在元素,则将这些元素推送到新数组中。在本例中,我有一个字符串数组 例如 var check = ["6003", "6005", "6010"]; //static values. I need to check these elements if they are present in InputValues var InputValues = ["5005", 2005", "6010"]; //dynamic input values

我想检查一个数组中的元素是否存在于另一个数组中。如果存在元素,则将这些元素推送到新数组中。在本例中,我有一个字符串数组

例如

var check = ["6003", "6005", "6010"]; //static values. I need to check these elements if they are present in InputValues

var InputValues = ["5005", 2005", "6010"]; //dynamic input values

var result = ["6010"]; //dyanimic final array based off elements in InputValues
同样地

var InputValues = ["5005", 6005", "6010"];

var result = ["6005", "6010"];
有人能告诉我如何实现这一动态结果吗

var result = InputValues.filter((val) => check.includes(val));

编辑:使用了错误的方法
.includes()
如果您不关心IE(尽管它在Edge中),那么它就可以工作,否则这就是要使用的“现代”工具:-)

您可以与一起使用


基本上它所做的是,它将过滤
InputValues
中的元素,而不是
check
区分大小写。

可能是某个地方的重复项。。。但是你可以做
var set=newset(检查);var result=InputValues.filter(value=>set.has(value))
似乎与我上面的建议非常相似,但在应用过滤器之前,也会从两个输入数组中删除重复项。Yep-doh!尽管为浏览器兼容性提供了链接到MDN的借口;-)在下面的段落中,您仍然称它为
.contains()
。不,我不会称之为“现代”的。它比
.indexOf(…)>=0更具语义,但我认为在我对这个问题的评论中使用
.has()
检查将是一个数量级,因为
.has()
是平均的O(1)时间复杂度,而
.includes()
是O(n)时间的复杂性。啊,除了疲劳,我没有任何借口!将其更改为
,并根据数组的长度使用它可能会更快,但除非缓存
,否则对GC和整体性能的影响将显著降低-鉴于问题的简单性,它添加了很多OP可能无法理解的内容!;-)
var result = InputValues.filter(elem => check.indexOf(elem) >= 0);