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());