[removed] Remove duplicates of objects sharing same property value

后端 未结 12 1489
执念已碎
执念已碎 2020-11-30 06:00

I have an array of objects that I would like to trim down based on a specific key:value pair. I want to create an array that includes only one object per this s

12条回答
  •  天涯浪人
    2020-11-30 06:18

    I don't think there's a built-in function in Angular, but it isn't hard to create one:

    function removeDuplicates(originalArray, objKey) {
      var trimmedArray = [];
      var values = [];
      var value;
    
      for(var i = 0; i < originalArray.length; i++) {
        value = originalArray[i][objKey];
    
        if(values.indexOf(value) === -1) {
          trimmedArray.push(originalArray[i]);
          values.push(value);
        }
      }
    
      return trimmedArray;
    
    }
    

    Usage:

    removeDuplicates(arrayWithDuplicates, 'size');
    

    Returns:

    [
        {
            "color": "red",
            "size": "small"
        },
        {
            "color": "blue",
            "size": "medium"
        },
        {
            "color": "red",
            "size": "large"
        }
    ]
    

    And

    removeDuplicates(arrayWithDuplicates, 'color');
    

    Returns:

    [
        {
            "color": "red",
            "size": "small"
        },
        {
            "color": "green",
            "size": "small"
        },
        {
            "color": "blue",
            "size": "medium"
        }
    ]
    

提交回复
热议问题