【问题标题】:How to remove duplicated objects in a array and keep the min value如何删除数组中的重复对象并保持最小值
【发布时间】:2021-03-03 12:09:51
【问题描述】:

我需要删除重复的产品字段并保留价格最低的那个

var store = [
    {price: 730, product: "BSB", ida: 1614237278000},
    {price: 780, product: "SSA", ida: 1613237278000},
    {price: 832, product: "CWB", ida: 1614237278000},
    {price: 600, product: "POA", ida: 1601942490000},
    {price: 860, product: "POA", ida: 1601942490000},
    {price: 730, product: "BSB", ida: 1614237278000},
    {price: 832, product: "CWB", ida: 1614237278000},
    {price: 600, product: "POA", ida: 1601942490000},
    {price: 1020, product: "POA", ida: 1601942490000}
];

方法后我想要的结果数组是这样的:

var store = [
    {price: 730, product: "BSB", ida: 1614237278000},
    {price: 780, product: "SSA", ida: 1613237278000},
    {price: 832, product: "CWB", ida: 1614237278000},
    {price: 600, product: "POA", ida: 1601942490000},
];

我正在尝试做这样的事情,但它不会工作

store.map(product => {
    var duplicates = product.filter((product2 , index) => {
        if(product["product"] === product2["product"]) {
            store.splice(index, 1);
            return true;
        }

        return false;
    });

    var minValueInDuplicates = Math.min(...duplicates.map(d => d["price"]));

    var singleDuplicate = duplicates.find(d => d["price"] === minValueInDuplicates);

    return singleDuplicate;

});

【问题讨论】:

    标签: javascript arrays duplicates


    【解决方案1】:

    如果输出数组的长度与输入数组的长度不同,则您不想使用映射,而是过滤或在这种情况下减少。

    const obj = store.reduce((acc, product) => {
      if (!acc[store.product] || acc[store.product].price > product.price) {
        acc[store.product] = product;
      }
     return acc;
    }, {});
    
    const result = Object.values(obj);
    

    【讨论】:

      猜你喜欢
      • 2014-02-03
      • 1970-01-01
      • 2017-12-31
      • 2021-08-26
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 2020-05-11
      • 2019-06-05
      相关资源
      最近更新 更多