Javascript 从对象值的多维数组中动态删除列

Javascript 从对象值的多维数组中动态删除列,javascript,angular,Javascript,Angular,我试图从多维对象数组中删除列, 下面是多维对象数组和我尝试过的代码:- 常量数组1=[ [{ 勾选:假, 身份证号码:13993, 键入:“复选框”, }, { 勾选:假, 身份证号码:13995, 类型:“标签”, }, { 勾选:假, 身份证号码:13998, 类型:“标签”, }, { 勾选:假, 身份证号码:13940, 类型:“标签”, }, ], [{ 勾选:假, 身份证号码:13993, 键入:“复选框”, }, { 勾选:假, 身份证号码:13995, 类型:“标签”, },

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

常量数组1=[
[{
勾选:假,
身份证号码:13993,
键入:“复选框”,
},
{
勾选:假,
身份证号码:13995,
类型:“标签”,
},
{
勾选:假,
身份证号码:13998,
类型:“标签”,
},
{
勾选:假,
身份证号码:13940,
类型:“标签”,
},
],
[{
勾选:假,
身份证号码:13993,
键入:“复选框”,
},
{
勾选:假,
身份证号码:13995,
类型:“标签”,
},
{
勾选:假,
身份证号码:13998,
键入:“复选框”,
},
{
勾选:假,
身份证号码:13940,
类型:“标签”,
},
],
[{
勾选:假,
身份证号码:13993,
键入:“复选框”,
},
{
勾选:假,
身份证号码:13995,
类型:“标签”,
},
{
勾选:假,
身份证号码:13998,
键入:“复选框”,
},
{
勾选:假,
身份证号码:13940,
类型:“标签”,
},
],
[{
勾选:假,
身份证号码:13993,
类型:“标签”,
},
{
勾选:假,
身份证号码:13995,
类型:“标签”,
},
{
勾选:假,
身份证号码:13998,
类型:“标签”,
},
{
勾选:假,
身份证号码:13940,
类型:“标签”,
},
]
];
数组1.map((a,i)=>{
a、 拼接(2,1);
控制台日志(a)
返回a;
});

控制台日志(array1)你的意思是这样的吗

const removeCol=(表,共索引)=>{
表.forEach(行=>行.拼接(colIndex,1))
}
removeCol(array1,0);//删除列0的步骤(0索引)
removeCol(阵列1,1);//删除列1的步骤(0索引)

也许你可以试试下面的方法

让arr=[
[1,2,3,4,24,'c'],
[a',2,3',b',24',d']
];
让resultar=JSON.parse(JSON.stringify(arr));
设tempArr=[];
for(设i=0;iitem==tempArr[0])){
让index=resultArr[0].findIndex(p=>p==tempArr[0]);
resultar=resultar.map(val=>{
值拼接(索引,1);
返回val;
});
}
tempArr=[];
}
console.log(resultar)
[
{id:1},
{id:2},
{id:3},
{id:4},
],
[
{id:2},
{id:2},
{id:3},
{id:5},
],
]
函数createNewArray(arr,n){
常数newArr=[];
arr.forEach(元素=>{
newArr.push(元素[n])
});
返回newArr;
}
函数getResult(){
常量tempArray=[];
for(让index=0;indexe.id);
如果([…新集合(新数组)]。长度>1){
tempArray.push(newArray);
}
}
让结果=数组(tempArray[0].length).fill([]);
返回result.map((item,index)=>tempArray.map(e=>e[index]);
}
log('result',getResult());

不是一个完美的解决方案,但要获得预期的结果:

  • 两个
    13993
    13998

  • 检查
    id
    并相应修改值

  • 常量数组1=[
    [{
    勾选:假,
    身份证号码:13993,
    键入:“复选框”,
    },
    {
    勾选:假,
    身份证号码:13995,
    类型:“标签”,
    },
    {
    勾选:假,
    身份证号码:13998,
    类型:“标签”,
    },
    {
    勾选:假,
    身份证号码:13940,
    类型:“标签”,
    },
    ],
    [{
    勾选:假,
    身份证号码:13993,
    键入:“复选框”,
    },
    {
    勾选:假,
    身份证号码:13995,
    类型:“标签”,
    },
    {
    勾选:假,
    身份证号码:13998,
    键入:“复选框”,
    },
    {
    勾选:假,
    身份证号码:13940,
    类型:“标签”,
    },
    ],
    [{
    勾选:假,
    身份证号码:13993,
    键入:“复选框”,
    },
    {
    勾选:假,
    身份证号码:13995,
    类型:“标签”,
    },
    {
    勾选:假,
    身份证号码:13998,
    键入:“复选框”,
    },
    {
    勾选:假,
    身份证号码:13940,
    类型:“标签”,
    },
    ],
    [{
    勾选:假,
    身份证号码:13993,
    类型:“标签”,
    },
    {
    勾选:假,
    身份证号码:13995,
    类型:“标签”,
    },
    {
    勾选:假,
    身份证号码:13998,
    类型:“标签”,
    },
    {
    勾选:假,
    身份证号码:13940,
    类型:“标签”,
    },
    ]
    ];
    让filteredArray=array1.map(x=>x.filter(v=>v.id==13993 | | v.id==13998))//第一步
    让result=filteredArray.map(x=>x.filter(v=>v.id==13993?v.type=“checkbox”:v.type=“label”)//第二步
    //我想第二步可以用更有效的方式完成
    
    console.log(result)
    如果要编辑数组,则无需使用
    map
    。只需使用foreach“删除第2列和第4列,因为它们的值相同”是什么意思???预期的输出是什么?@mplungjan我想动态删除该列,上面是一个示例,在每个子数组中包含delete type==label和id:13995,我想从父数组中删除它。从给定的数组中,我知道您正在尝试删除id为13998的项。是否正确?@SivakumarTadisetti yes尝试删除id-13998和id 13940,但在我的情况下传递0,1无效,因为我有多个arraysconst设置={0:[13998,13940],//1:[13998]//;如何从数组中获取这些id并传递到设置,在我的情况下,我不知道需要传递哪个id,我需要循环,如果相同id的列,那么我将删除该列您需要删除重复的列吗?您确定上面写的没有错误:[[1]、[2]、[3]、[4]、[2]、[2]、[3]、[5]-->[2]、[4]、[2]、[5]。我想你的意思是输出应该是[1],[4],[2],[5],[2],[4],[2]是的,输出应该是[1],[4],[2][
        [
            { 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());