首页 > 解决方案 > 数组减少方法正在覆盖第一个元素

问题描述

下面是我的函数,它有 reduce 方法

    getFilters(gridFilters, columnList){
      const filtersArray = [];
      let filterObject = {};
      gridFilters.forEach((ele, i, arr) => {
        filtersArray.push(...arr[i].filters);
      });      
      const _filArr = filtersArray.reduce((acc, {field, operator, value}) => {        
        filterObject['columnName'] = field;   
        filterObject['filterValue1'] = value;
        filterObject['filterOperator1'] = operator;
        filterObject['filterValue2'] = '';
        filterObject['filterOperator2'] = ''; 
        columnList.push(filterObject);    
        return acc;
      }, {});    
      return columnList;

在这里,filtersArray将有 2 个数组元素,例如'

    Array(2)    
    0:
        field: "objectType"
        operator: "contains"
        value: "lic"
        [[Prototype]]: Object
    1:
        field: "attributeDisplayName"
        operator: "contains"
        value: "date"
        [[Prototype]]: Object
        length: 2
        [[Prototype]]: Array(0)

但是在将值推送到columnList数组之后,我看到第二个对象(具有attributeDisplayName)针对这两个值。基本上,第一个对象(具有objectType)被数组中的第二个对象覆盖。

这就是columnList被覆盖的方式

    Array(2)    
    0:
        columnName: "attributeDisplayName"
        filterOperator1: "contains"
        filterOperator2: ""
        filterValue1: "date"
        filterValue2: ""
        [[Prototype]]: Object
    1:
        columnName: "attributeDisplayName"
        filterOperator1: "contains"
        filterOperator2: ""
        filterValue1: "date"
        filterValue2: ""
        [[Prototype]]: Object
        length: 2
        [[Prototype]]: Array(0)

有人可以建议我在这里做错了什么。谢谢

标签: javascript

解决方案


推荐阅读