【问题标题】:How to find a duplicate value in this object array? [closed]如何在此对象数组中查找重复值? [关闭]
【发布时间】:2021-10-25 09:06:25
【问题描述】:
    zones = [
      {zone:'A' : price:'20'},
      {zone:'B' : price:'20'},
      {zone:'C' : price:'20'},
      {zone:'A' : price:'20'},
    ];

这是我的对象数组,如果区域“A”重复两次我需要找到那个,我如何找到重复值?

【问题讨论】:

标签: javascript arrays


【解决方案1】:

在这里找到这个答案:post 1

 var zones = [
    {zone:'A' : price:'20'},
    {zone:'B' : price:'20'},
    {zone:'C' : price:'20'},
    {zone:'A' : price:'20'},
 ];

 unique = [...new Set(zones.map(propYoureChecking => 
    propYoureChecking.zone))];
    if (unique.length === 1) {
    console.log(unique);
 }

对于普通数组:post 2

您可以通过几种不同的方式进行操作:这是一种(来自帖子):

 const arry = [1, 2, 1, 3, 4, 3, 5];

 const toFindDuplicates = arry => arry.filter((item, index) => arr.indexOf(item) !== index)
 const duplicateElementa = tofindDuplicates(arry);
 onsole.log(duplicateElements);

// Output: [1, 3]

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:
zones = [{
    zone: 'A',
    price: '20'
  },
  {
    zone: 'B',
    price: '20'
  },
  {
    zone: 'C',
    price: '20'
  }
];

var result = []

for (let i = 0; i < zones.length; i++) {
  for (let k = 1; k < zones.length; k++) {
    if (zones[i].zone === zones[k].zone && i != k && result.indexOf(zones[i].zone) == -1) {
      result.push(zones[i].zone)
      console.log(zones[i].zone)
    }
  }
}

【讨论】:

    【解决方案3】:

    您的要求有点模糊,但假设您要查找重复对象的索引。

    
    zones = [
    {zone:'A', price:'20'},
    {zone:'B', price:'20'},
    {zone:'C', price:'20'},
    {zone:'A', price:'20'},
    ];
    
    const zoneAIndices = [];
    
    zones.forEach((zone, index) => {
     if( zone.zone === 'A') {
       zoneAIndices.push(index);
     }
    });
    
    

    现在zoneAIndices[1] 具有重复项的索引。

    注意:

    您定义的zones 数组不正确,而不是zoneprice 之间的: 应该是,

    【讨论】:

      【解决方案4】:

      您可以减少代码并简单地创建一个函数来选择键并计算出现次数,如下所示

      const zones = [
      {zone:'A' , price:'20'},
      {zone:'B' , price:'20'},
      {zone:'C' , price:'20'},
      {zone:'A' , price:'20'},
      ];
      
      const countRepeat = (x,field) =>  zones.filter(element => element[field]===x).length
          
          console.log(countRepeat('A','zone')) // 2
          
          console.log(countRepeat('20','price')) //4

      您可以查看更多信息:https://learnjsx.com/category/2/posts/es6-filterFunction

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-09
        • 2016-04-17
        • 2020-02-15
        • 1970-01-01
        • 2018-08-13
        • 1970-01-01
        • 2021-11-14
        相关资源
        最近更新 更多