对象的交集,两个数组之间的一个属性除外

我有两个数组,它们包含相同类型的对象(相同的属性,但关联的值不同)。我想比较两个数组,并匹配除一个属性外相等的对象。然后,我想在第一个数组中找到匹配对象的索引,以便将这些对象推入另一个数组中。

我认为所有这些都可以使用lodash来完成,我想避免使用for循环,以使其尽可能高效

请注意,我在js类中工作

这是我的尝试(无效)

class MatchPlayers {
    constructor(){
        this.TeamA = [
            {weight:'75',height:'170', foot:'Left', available:true},
            {weight:'88',height:'190', foot:'Right', available:true},
            {weight:'65',height:'163', foot:'Right', available:false},
            {weight:'70',height:'168', foot:'Left', available:true}
        ]

        this.TeamB = [
            {weight:'75',height:'170', foot:'', available:true},
            {weight:'93',height:'201', foot:'', available:true},
            {weight:'65',height:'163', foot:'', available:false}
        ]

        this.MatchedPlayers = []
    }

    PlayersMatch (){
        for(this.i=0;this.i<this.TeamA.length;this.i++){
            if (_.intersection(this.TeamA,{weight:this.TeamB.weight, height:this.TeamB.height, available:this.TeamB.available})){
              this.position = _.findIndex(this.TeamA,{weight:this.TeamB.weight, height:this.TeamB.height, available:this.TeamB.available})
              this.MatchedPlayers.push(this.TeamA[this.position])
            } else {console.log('No matchable players')}
          }
        console.log(this.MatchedPlayers)
    }
}

在这种情况下,我想匹配除“ foot”外具有相同属性的对象,因此预期输出为:

//Expected Output:
this.MatchedPlayers = [
    {weight:'75',height:'170', foot:'Left', available:true}, 
    {weight:'65',height:'163', foot:'Right', available:false}
]
妮娜·斯科茨(Nina Scholz)

您可以采用简化的方法并忽略foot属性,并获得_.isEquallefot与属性的交点

var a = [{ weight: '75', height: '170', foot: 'Left', available: true }, { weight: '88', height: '190', foot: 'Right', available: true }, { weight: '65', height: '163', foot: 'Right', available: false }, { weight: '70', height: '168', foot: 'Left', available: true }],
    b = [{ weight: '75', height: '170', foot: '', available: true }, { weight: '93', height: '201', foot: '', available: true }, { weight: '65', height: '163', foot: '', available: false }],
    omitFoot = o => _.omit(o, 'foot'),
    intersection = _.intersectionWith(
        _.map(a, omitFoot),
        _.map(b, omitFoot),
        _.isEqual
    );

console.log(intersection);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

两个数组之间的交集

来自分类Dev

根据字段查找两个对象数组之间的交集

来自分类Dev

Postgres WHERE两个数组有一个非空的交集

来自分类Dev

如何产生一个数组,该数组是两个json对象数组之间的差异

来自分类Dev

从两个数组创建一个JavaScript对象

来自分类Dev

创建一个变量,其中包含由两个 .map() 组成的两个数组,以寻找匹配或交集

来自分类Dev

用jquery匹配两个数组,并为value和data-attribute之间的匹配添加一个属性

来自分类Dev

合并数组中的两个对象,其中值是一个数组

来自分类Dev

JS时间-为两个日期之间的每年建立一个数组

来自分类Dev

Perl,比较并计算两个数组之间交集的出现。

来自分类Dev

一个对象包含两个数组。如何匹配所有数组的ID?

来自分类Dev

包含对象的两个数组的差和交集

来自分类Dev

从两个数组创建一个多维数组

来自分类Dev

比较数组中的两个元素,如果某些属性匹配,则更新第一个数组的属性

来自分类Dev

如何将两个数组合并为一个对象

来自分类Dev

两个数组对一个对象的元素引用

来自分类Dev

两个数组对一个对象的元素引用

来自分类Dev

合并两个数据源以创建一个对象数组

来自分类Dev

比较两个数组并将对象添加到另一个数组

来自分类Dev

*更新*为两个二维数组之间的距离创建一个数组

来自分类Dev

如何在一系列其他两个数组之间创建一个随机数组?

来自分类Dev

检查两个对象之间的交集的算法

来自分类Dev

PHP关联数组交集返回两个元素,而不是一个

来自分类Dev

如何从两个数组创建一个结构?

来自分类Dev

添加两个数组以创建一个

来自分类Dev

比较两个具有对象的数组,并从第一个数组中删除重复项

来自分类Dev

将两个对象数组列表与第一个数组中的结构字段合并

来自分类Dev

如何根据键匹配值将两个对象数组合并为一个数组

来自分类Dev

通过对象属性两个列表的交集

Related 相关文章

  1. 1

    两个数组之间的交集

  2. 2

    根据字段查找两个对象数组之间的交集

  3. 3

    Postgres WHERE两个数组有一个非空的交集

  4. 4

    如何产生一个数组,该数组是两个json对象数组之间的差异

  5. 5

    从两个数组创建一个JavaScript对象

  6. 6

    创建一个变量,其中包含由两个 .map() 组成的两个数组,以寻找匹配或交集

  7. 7

    用jquery匹配两个数组,并为value和data-attribute之间的匹配添加一个属性

  8. 8

    合并数组中的两个对象,其中值是一个数组

  9. 9

    JS时间-为两个日期之间的每年建立一个数组

  10. 10

    Perl,比较并计算两个数组之间交集的出现。

  11. 11

    一个对象包含两个数组。如何匹配所有数组的ID?

  12. 12

    包含对象的两个数组的差和交集

  13. 13

    从两个数组创建一个多维数组

  14. 14

    比较数组中的两个元素,如果某些属性匹配,则更新第一个数组的属性

  15. 15

    如何将两个数组合并为一个对象

  16. 16

    两个数组对一个对象的元素引用

  17. 17

    两个数组对一个对象的元素引用

  18. 18

    合并两个数据源以创建一个对象数组

  19. 19

    比较两个数组并将对象添加到另一个数组

  20. 20

    *更新*为两个二维数组之间的距离创建一个数组

  21. 21

    如何在一系列其他两个数组之间创建一个随机数组?

  22. 22

    检查两个对象之间的交集的算法

  23. 23

    PHP关联数组交集返回两个元素,而不是一个

  24. 24

    如何从两个数组创建一个结构?

  25. 25

    添加两个数组以创建一个

  26. 26

    比较两个具有对象的数组,并从第一个数组中删除重复项

  27. 27

    将两个对象数组列表与第一个数组中的结构字段合并

  28. 28

    如何根据键匹配值将两个对象数组合并为一个数组

  29. 29

    通过对象属性两个列表的交集

热门标签

归档