javascript - 从对象值的多维数组中动态删除列
问题描述
我正在尝试从多维对象数组中删除该列,下面是多维对象数组和我尝试过的代码:-
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",
},
],
];
这是数组的下图,标记的需要删除:
解决方案
[
{ 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());
推荐阅读
- vue.js - Vue子组件没有动态更新
- python - Python3函数前'*'的用途
- vb.net - ItextSharp - 将 pdf 纸张大小设置为 8.5x13
- powerbi - Dax : 连续每周 COUNT 个条目
- angular - 角http请求
- omnet++ - 为什么在路由协议示例中使用 ping app?
- dart - 由于 Dart 中的 Null 安全问题,无法构建我的项目
- c++ - LNK2019 将函数放在头文件之外时出错
- php - Laravel 如何删除 url 中的“public”(版本 7)
- vue.js - 如何阻止 axios 将 nuxt-auth 令牌发送到外部 API?