【问题标题】:How to check if there are equal values in array [duplicate]如何检查数组中是否存在相等的值[重复]
【发布时间】:2019-03-04 04:29:28
【问题描述】:

我有一个产品数组,我会循环并将它们显示在一个项目上。但是,同一产品可能会在同一天被多次选择,因此我希望正确显示数量,但我不知道该怎么做。

所以我的数组看起来像这样:

[
  {product_id: "679", quantity: "1", chosen_date: "2018-10-01"}
  {product_id: "675", quantity: "1", chosen_date: "2018-10-02"}
  {product_id: "675", quantity: "1", chosen_date: "2018-10-02"}
  {product_id: "675", quantity: "1", chosen_date: "2018-10-03"}
]

这是显示每个项目的循环

let elementWrapper = document.querySelectorAll('.items') 
for (var i = 0; i < items.length; i++){
    let elem = elementWrapper[i];
    let chosen_date = items[i].chosen_date;
    let product_id = items[i].product_id;
    let quantity = items[i].quantity;
    let span = document.createElement('span');
    span.innerHTML = moment(chosen_date).locale('da').format('Do MMM');
    elementWrapper[i].append(span);
}

其中“items”是数组。

如上所述,我希望 ID 为“675”的产品在“2018-10-02”中被选择两次,只显示一次,数量 = 2

我怎样才能做到这一点?

【问题讨论】:

    标签: javascript jquery arrays json


    【解决方案1】:

    var items = [
      {product_id: "679", quantity: 1, chosen_date: "2018-10-01",another:'a'},
      {product_id: "675", quantity: 1, chosen_date: "2018-10-02",another:'b'},
      {product_id: "675", quantity: 1, chosen_date: "2018-10-02",another:'a'},
      {product_id: "675", quantity: 1, chosen_date: "2018-10-03",another:'c'}
    ];
    
    var incrementField = 'quantity';
    var exceptFields = ['another'];
    /**
    * @param items [array] items as a multidimensional array
    * @param incrementField [string]
    * @param exceptFields [array]
    **/
    function plusArrays(items,incrementField,exceptFields=[]){
      // array with a filtered keys and values to help searching
      unique_arrays = [];
      // Original arrays
      unique_arrays_without_except = [];
      items.forEach(function(item){
        // Cloning the item
        original_item = JSON.parse(JSON.stringify(item));
        // Deleting the excep fields
        exceptFields.forEach(function(except){
          delete item[except];
        })
        // Getting the increment value before delting it
        var incrementValue = item[incrementField];
        // unsetting the incrementValue property
        delete item[incrementField];
        // Adding the increment value
        if(unique_arrays.indexOf(JSON.stringify(item))+1>0) {
      unique_arrays_without_except[unique_arrays.indexOf(JSON.stringify(item))][incrementField]+=incrementValue;
        } else {
          // Pushing the original item to original items list
          unique_arrays_without_except.push(original_item);
          // Pushing the filtered items to list
          unique_arrays.push(JSON.stringify(item));
        }
      });
      
      return unique_arrays_without_except;
    }
    
    console.log(plusArrays(items,incrementField,exceptFields))

    这里有一个功能来完成你的工作。干杯!

    【讨论】:

      猜你喜欢
      • 2011-12-14
      • 1970-01-01
      • 2016-07-08
      • 1970-01-01
      • 1970-01-01
      • 2019-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多