【问题标题】:lodash.differenceBy in vanilla javascript?lodash.differenceBy 在香草 JavaScript 中?
【发布时间】:2019-02-28 06:17:03
【问题描述】:

我有两个对象数组让我们说

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;});
}

【问题讨论】:

标签: javascript lodash


【解决方案1】:

您可以像这样使用 filtersome

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
}

【讨论】:

    【解决方案2】:

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

    来检查任何lodash 方法源

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

    【讨论】:

      猜你喜欢
      • 2012-09-23
      • 2019-02-03
      • 2023-01-18
      • 2020-07-31
      • 2017-03-02
      • 2021-11-29
      • 2011-11-25
      • 1970-01-01
      相关资源
      最近更新 更多