首页 > 解决方案 > 获取不同大小的多个数组之间的数组差异

问题描述

一直在绕圈子。

例如,假设我有不同的时间段存储为此

let timechunks1 = [["09:00", "10:00", "11:00"], ["09:00", "10:00", "11:00"], ["09:00", "10:00", "11:00", "12:00"]] 
let timechunks2 = [["09:00", "10:00", "11:00"], ["09:00", "10:00", "11:00"], ["09:00", "10:00"]]


 for (let i=0; i< timechunks.length; i++) {
 differences.push(_.difference(timechunks[0], timechunks[i]))      
}

需要提取 12:00,因为它没有出现在其他人中。我得到的最接近的是下划线 _difference 但可惜它没有达到我的预期。

对于 timechunks1 我正在寻找返回“12:00” 对于 timechunks2 我正在寻找一种返回“11:00”的方法

添加了另一个示例

[
["09:00", "10:00", "11:00" ,"13:00"],
["09:00", "10:00", "11:00", "13:00"], 
["09:00", "10:00", "11:00", "12:00"]
]  

它将返回 ["13:00", "12:00"]

标签: javascriptlodashunderscore.jsramda.js

解决方案


在集合论术语中,您正在寻找的是对称差异。你可以通过取并减去交集来找到这个集合:

function symmetricDifference(...sets) {
    return _.difference(_.union(...sets), _.intersection(...sets));
}

推荐阅读