如何删除具有相同值的jQuery?

时间:2019-02-21 11:02:29

标签: javascript jquery arrays

我的问题很简单,但我不能。 JSON有数据。我正在某处进行循环推送。但是再次添加了相同的值。我想解决这个问题。只有一个可以删除具有相同值的名称。

摘要;

thelist = [{"name": "test", "name": "test2", "name": "test"}]

我想删除相同的名字。只有一个。

控制台示例图片;

enter image description here

示例jQuery代码;

     var $el = this;
     var groupedItem = _.groupBy(itemList, function(t) { return t.unitPriceCurrency });

    $.each(groupedItem, function( key, value ) {
        var obj = JSON.stringify(value);
        var stringify = JSON.parse(obj);
        var amount = 0;
        var tax = 0;

        for (var i = 0; i < stringify.length; i++) {
            amount += stringify[i]['unitPrice'] * stringify[i]['quantity'];
            tax += stringify[i]['unitPrice'] * stringify[i]['quantity'] * stringify[i]['taxRate'] / 100;
        }

        var totalAmount = Math.round(amount * 100) / 100;
        var withTaxTotal = totalAmount + tax;

        for(let i = 0; i < totalLayout.length; i++) {                                
            totalLayout =  $.grep(totalLayout, function(value) {
                return totalLayout[i]["name"] != value.name;
            });
        }

        totalLayout.push(
            {"name": key + ' Amount'},
            {"name": key + ' Tax'},
            {"name": key + ' Total Amount'}
        );

        $el.model.set(key + ' Amount', totalAmount);
        $el.model.set(key + ' Tax', Math.round(tax * 100) / 100);
        $el.model.set(key + ' Total Amount', withTaxTotal);
    });

2 个答案:

答案 0 :(得分:2)

这里尝试使用filterfindIndex

  thelist = [{"name": "test"}, {"name": "test2"}, {"name": "test"}]

  Array.prototype.distinctBy= function(key){
     return this.filter((value, index, self)=> {
      return self.findIndex((v, i)=> v[key] === value[key]) === index
     });
  
  }

  console.log(thelist.distinctBy("name"))

答案 1 :(得分:0)

根据您的图像,对象应该看起来像这样

thelist = [{"name": "test"}, {"name": "test2"}, {"name": "test"}]

您可以使用过滤器来达到所需的结果

thelist = thelist.filter(
            (item, index, self) =>
                index ===
                self.findIndex(t =>
                    Object.keys(thelist[0]).every(prop => t[prop] === item[prop])
                )
        );