首页 > 解决方案 > 从对象值的多维数组中动态删除列

问题描述

我正在尝试从多维对象数组中删除该列,下面是多维对象数组和我尝试过的代码:-

const array1 = [
  [{
      checked: false,
      id: 13993,
      type: "checkbox",
    },
    {
      checked: false,
      id: 13995,
      type: "label",
    },
    {
      checked: false,
      id: 13998,
      type: "label",
    },
    {
      checked: false,
      id: 13940,
      type: "label",
    },
  ],
  [{
      checked: false,
      id: 13993,
      type: "checkbox",
    },
    {
      checked: false,
      id: 13995,
      type: "label",
    },
    {
      checked: false,
      id: 13998,
      type: "checkbox",
    },
    {
      checked: false,
      id: 13940,
      type: "label",
    },
  ],
  [{
      checked: false,
      id: 13993,
      type: "checkbox",
    },
    {
      checked: false,
      id: 13995,
      type: "label",
    },
    {
      checked: false,
      id: 13998,
      type: "checkbox",
    },
    {
      checked: false,
      id: 13940,
      type: "label",
    },
  ],
  [{
      checked: false,
      id: 13993,
      type: "label",
    },
    {
      checked: false,
      id: 13995,
      type: "label",
    },
    {
      checked: false,
      id: 13998,
      type: "label",
    },
    {
      checked: false,
      id: 13940,
      type: "label",
    },
  ]
];

array1.map((a, i) => {
  a.splice(2, 1);
  console.log(a)
  return a;
});

console.log(array1);

在上面的数组中,我想删除第二列和第四列,因为它们的值相同,

我发现了上面的逻辑,但是在这里我想动态传递索引而不是 2,我尝试了很多组合它可以工作,我也尝试传递 array1 索引但不删除正确的列。

如果我动态地传递索引,那么如果列重复,它将在数组中自动删除。

以下是预期的输出: -

result = [
  [{
      checked: false,
      id: 13993,
      type: "checkbox",
    },

    {
      checked: false,
      id: 13998,
      type: "label",
    },

  ],
  [{
      checked: false,
      id: 13993,
      type: "checkbox",
    },

    {
      checked: false,
      id: 13998,
      type: "label",
    },

  ],
  [{
      checked: false,
      id: 13993,
      type: "checkbox",
    },

    {
      checked: false,
      id: 13998,
      type: "label",
    },

  ],
  [{
      checked: false,
      id: 13993,
      type: "checkbox",
    },

    {
      checked: false,
      id: 13998,
      type: "label",
    },

  ],
];

这是数组的下图,标记的需要删除:

在此处输入图像描述

标签: javascriptangular

解决方案


    [
        { id: 1 },
        { id: 2 },
        { id: 3 },
        { id: 4 },
    ],
    [
        { id: 2 },
        { id: 2 },
        { id: 3 },
        { id: 5 },
    ],
]

function createNewArray(arr, n) {
    const newArr = [];
    arr.forEach(element => {
        newArr.push(element[n])
    });
    return newArr;
}

function getResult() {
    const tempArray = [];
    
    for (let index = 0; index < origin[0].length; index++){
        const newArray = createNewArray(origin, index).map(e => e.id);
        
        if ([...new Set(newArray)].length > 1) {
            tempArray.push(newArray);
        }
    }
    
    let result = Array(tempArray[0].length).fill([]);
    
    return result.map((item, index) => tempArray.map(e => e[index]));
}

console.log('result', getResult());

推荐阅读