Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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 - Fatal编程技术网

根据javascript中的匹配条件从数组数组中查找匹配项

根据javascript中的匹配条件从数组数组中查找匹配项,javascript,arrays,Javascript,Arrays,假设我有一个数组,如下所示: var array = [["001"," 003"],["002"," 001"],["001"," 002"],["002"," 001"], ["", "001"]] 条件是数组必须相互匹配2个或更多个匹配项,然后将结果存储到新数组中 我使用下面的javascript方法,该方法将对数组中的每一个数组进行比较 我试图做的是使javascript方法不循环数组中的每一个数组来查找匹配项,但它将基于上述条件(2个或更多匹配项) Javascript方法: va

假设我有一个数组,如下所示:

var array = [["001"," 003"],["002"," 001"],["001"," 002"],["002"," 001"], ["", "001"]]
条件是数组必须相互匹配2个或更多个匹配项,然后将结果存储到新数组中

我使用下面的javascript方法,该方法将对数组中的每一个数组进行比较

我试图做的是使javascript方法不循环数组中的每一个数组来查找匹配项,但它将基于上述条件(2个或更多匹配项)

Javascript方法:

var数组=[[“001”、“003”]、[“002”、“001”]、[“001”、“002”]、[“002”、“001”]、[“”和“001”]]
console.log(
array.shift().reduce(函数(res,v){
if(res.indexOf(v)==-1&&array.every(函数a){
返回a.indexOf(v)!=-1;
}))res.push(v);
返回res;
}, [])
)
对于on
O(N)
解决方案(您当前的
.reduce
中的每个
都是
O(N^2)
),您可以使用
reduce
创建一个按字符串索引的对象,其值是该字符串的出现次数。然后,
.filter
对对象的
键进行过滤,以获得至少有两个计数的键:

const-input=[[“001”、“003”]、[“002”、“001”]、[“001”、“002”]、[“002”、“001”]、[“”、“001”];
const obj=输入。减少((a,arr)=>{
arr.forEach((str)=>{
a[str]=(a[str]| | 0)+1;
});
返回a;
}, {});
常量输出=对象键(obj)
.filter(key=>obj[key]>=2)
控制台日志(输出)
对于on
O(N)
解决方案(您当前的
.reduce
中的每个
都是
O(N^2)
),您可以使用
reduce
创建一个按字符串索引的对象,其值是该字符串的出现次数。然后,
.filter
对对象的
键进行过滤,以获得至少有两个计数的键:

const-input=[[“001”、“003”]、[“002”、“001”]、[“001”、“002”]、[“002”、“001”]、[“”、“001”];
const obj=输入。减少((a,arr)=>{
arr.forEach((str)=>{
a[str]=(a[str]| | 0)+1;
});
返回a;
}, {});
常量输出=对象键(obj)
.filter(key=>obj[key]>=2)

控制台日志(输出)
Hi@CertainPerformance,我已经更新了问题,上面数组的结果是空的,但我希望它不是空的,而不是在新数组中有一个
001
002
值。谢谢@CertainPerformance,是的,应该是。“001”也应该包含在输出中,因为它与hi@CertainPerformance匹配,我已经更新了问题,上面数组的结果是空的,但我希望它不是空的,而不是在新数组中有一个
001
002
值。谢谢@CertainPerformance,是的,应该是。“001”也应该包含在输出中,因为它是匹配的,所以在这上面得到了它。非常感谢您的回答!顺便问一下,这些javascript内置函数是否仅限于特定版本的浏览器?还是所有浏览器都支持它?谢谢代码使用ES6语法,对ES6语法的支持很广泛,但并不统一,还使用
Object.entries
(类似,但更晚,ES2017)。理想情况下,在构建过程中使用Babel和polyfills,这样您就可以使用该语言的最新版本编写代码,并在生产过程中自动传输到ES5。有没有办法将其转换为不使用ES6或ES2017?因为刚才我在我的项目中进行了尝试,但是
对象不支持它。谢谢改用
对象.键
。我通过Babel运行了代码,现在可以正常工作了。非常感谢!好的,我明白了。非常感谢您的回答!顺便问一下,这些javascript内置函数是否仅限于特定版本的浏览器?还是所有浏览器都支持它?谢谢代码使用ES6语法,对ES6语法的支持很广泛,但并不统一,还使用
Object.entries
(类似,但更晚,ES2017)。理想情况下,在构建过程中使用Babel和polyfills,这样您就可以使用该语言的最新版本编写代码,并在生产过程中自动传输到ES5。有没有办法将其转换为不使用ES6或ES2017?因为刚才我在我的项目中进行了尝试,但是
对象不支持它。谢谢改用
对象.键
。我通过Babel运行了代码,现在可以正常工作了。非常感谢!