lodash.difference由香草javascript提供吗?

时间:2019-02-28 06:17:03

标签: javascript lodash

我有两个对象数组

var toto = [
  {a:1, b:2, c:1},
  {a:7, c:2, d:1}
]

var titi = [
  {a:2, b:2, c:1},
  {a:1, c:2, d:1}
]

我想找到lodash.differenceBy的替代方法(我不想仅在这种情况下实现)

基本上可以做的事情

differenceBy(toto,titi, "a")
// => [{a:2, b:2, c:1}]

我用一个简单的参数制作了一个过滤器,但是我在添加对象方面很努力

static DifferenceBy(arr:Array<any>, arr2:Array<any>){
    return arr.filter(function(i) {return arr2.indexOf(i) < 0;});
}

2 个答案:

答案 0 :(得分:1)

您可以转到https://lodash.com并单击 Source

来检查任何lodash方法源。

例如,转到https://lodash.com/docs/4.17.11#differenceBy

_.differenceBy

答案 1 :(得分:0)

您可以像这样使用 filter some

const toto = [{a:1,b:2,c:1},{a:7,c:2,d:1}]
const titi = [{a:2,b:2,c:1},{a:1,c:2,d:1}]

function differenceBy(array1, array2, key) {
  return array1.filter(a => !array2.some(b => b[key] === a[key]))
}

console.log(differenceBy(toto, titi, "a"))

这将返回array1中不存在的array2中的所有项目:

{
    "a": 7,
    "c": 2,
    "d": 1
}