繁体   English   中英

从多个数组中查找唯一值跳过空数组

[英]Finding unique values from multiple arrays skipping empty arrays

注意:不是重复的问题..在这里我需要跳过空数组。

假设我有几个数组,例如:

var a = [1, 2, 3, 4],
b = [2, 4],
c = [],
d = [4];

使用以下功能,我可以获得所需的结果: [4]

 var a = [1, 2, 3, 4], b = [2, 4], c = [], d = [4]; var res = [a, b, c, d].reduce((previous, current) => !previous.length || previous.filter((x) => !current.length || current.includes(x)), ); console.log(res)

我包括!current.length || 以上绕过空数组c 但是,如果集合中的第一个数组即a为空,则这不起作用。 结果将是[]

过滤一下就好了使代码更具可读性

 var a = [1, 2, 3, 4], b = [2, 4], c = [], d = [4]; var res = [c, b, a, d].filter(arr => arr.length).reduce((previous, current) => previous.filter((x) => current.includes(x)), ); console.log(res)

此代码将按您的预期工作(vanilla JS,支持旧浏览器):

 var a = [1, 2, 3, 4], b = [2, 4], c = [], d = [4]; var res = [a, b, c, d].reduce(function(acc, arr) { // ignore empty array if(arr.length == 0) return acc; // assign first non-empty array to accumudation if(acc.length == 0) return arr; // otherwise, accumudation will be insection of current accomudation and current array return acc.filter(function(n) { return arr.indexOf(n) !== -1; }); }, []); console.log(res)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM