如何从 javascript 中的嵌套对象数组中删除特定项目属性
How to Remove a specific items attributes from nested array of object in javascript
我有一个示例中给出的对象数组。我在单个数组中完成了此操作,但不知道在多维数组或嵌套数组中执行此操作。阅读所有这些问题
How do I remove a property from a JavaScript object?
How can I remove a specific item from an array?
let array = [
{
id:1,
items:
[
{id: 1, name:"Aftab", rollno:"1", type:"student"},
{id: 1, name:"Aftab", rollno:"1", type:"teacher"},
{id: 1, name:"Aftab", rollno:"1", type:"student"},
]
},{
id:2,
items:
[
{id: 1, name:"Aftab", rollno:"1"},
{id: 1, name:"Aftab", rollno:"1"},
{id: 1, name:"Aftab", rollno:"1"},
]
},{
id:3,
items:
[
{id: 1, name:"Aftab", rollno:"1"},
{id: 1, name:"Aftab", rollno:"1"},
{id: 1, name:"Aftab", rollno:"1"},
]
},]
我想更改 rollno
或将其从具有教师类型的项目中删除。
当类型为 teacher
时更改 rollno
。
let arrayData = [
{
id: 1,
items:
[
{ id: 1, name: "Aftab", rollno: "1", type: "student" },
{ id: 1, name: "Aftab", rollno: "1", type: "teacher" },
{ id: 1, name: "Aftab", rollno: "1", type: "student" },
]
}, {
id: 2,
items:
[
{ id: 1, name: "Aftab", rollno: "1" },
{ id: 1, name: "Aftab", rollno: "1" },
{ id: 1, name: "Aftab", rollno: "1" },
]
}, {
id: 3,
items:
[
{ id: 1, name: "Aftab", rollno: "1" },
{ id: 1, name: "Aftab", rollno: "1" },
{ id: 1, name: "Aftab", rollno: "1" },
]
},
]
arrayData.forEach((node) => {
node.items.forEach((item) => {
if(item.type === 'teacher') {
item.rollno = null;
}
})
});
console.log(arrayData)
当类型为 teacher
时删除 rollno
。
let arrayData = [
{
id: 1,
items:
[
{ id: 1, name: "Aftab", rollno: "1", type: "student" },
{ id: 1, name: "Aftab", rollno: "1", type: "teacher" },
{ id: 1, name: "Aftab", rollno: "1", type: "student" },
]
}, {
id: 2,
items:
[
{ id: 1, name: "Aftab", rollno: "1" },
{ id: 1, name: "Aftab", rollno: "1" },
{ id: 1, name: "Aftab", rollno: "1" },
]
}, {
id: 3,
items:
[
{ id: 1, name: "Aftab", rollno: "1" },
{ id: 1, name: "Aftab", rollno: "1" },
{ id: 1, name: "Aftab", rollno: "1" },
]
},
]
arrayData.forEach((node) => {
node.items.forEach((item) => {
if(item.type === 'teacher') {
delete item.rollno;
}
})
});
console.log(arrayData)
let array = [
{
id:1,
items:
[
{id: 1, name:"Aftab", rollno:"1", type:"student"},
{id: 1, name:"Aftab", rollno:"1", type:"teacher"},
{id: 1, name:"Aftab", rollno:"1", type:"student"},
]
},{
id:2,
items:
[
{id: 1, name:"Aftab", rollno:"1"},
{id: 1, name:"Aftab", rollno:"1"},
{id: 1, name:"Aftab", rollno:"1"},
]
},{
id:3,
items:
[
{id: 1, name:"Aftab", rollno:"1"},
{id: 1, name:"Aftab", rollno:"1"},
{id: 1, name:"Aftab", rollno:"1"},
]
}]
const recurse = (arr, repl) => arr.map(item =>
item.items instanceof Array
? {
items: recurse(item.items, repl)
}
: repl(item)
)
const updatedArray = recurse(array, (item) => (
item.type !== 'teacher' ? item: {...item, rollno: 'updated whatever'})
);
console.log('updatedArray', updatedArray);
我有一个示例中给出的对象数组。我在单个数组中完成了此操作,但不知道在多维数组或嵌套数组中执行此操作。阅读所有这些问题
How do I remove a property from a JavaScript object?
How can I remove a specific item from an array?
let array = [
{
id:1,
items:
[
{id: 1, name:"Aftab", rollno:"1", type:"student"},
{id: 1, name:"Aftab", rollno:"1", type:"teacher"},
{id: 1, name:"Aftab", rollno:"1", type:"student"},
]
},{
id:2,
items:
[
{id: 1, name:"Aftab", rollno:"1"},
{id: 1, name:"Aftab", rollno:"1"},
{id: 1, name:"Aftab", rollno:"1"},
]
},{
id:3,
items:
[
{id: 1, name:"Aftab", rollno:"1"},
{id: 1, name:"Aftab", rollno:"1"},
{id: 1, name:"Aftab", rollno:"1"},
]
},]
我想更改 rollno
或将其从具有教师类型的项目中删除。
当类型为 teacher
时更改 rollno
。
let arrayData = [
{
id: 1,
items:
[
{ id: 1, name: "Aftab", rollno: "1", type: "student" },
{ id: 1, name: "Aftab", rollno: "1", type: "teacher" },
{ id: 1, name: "Aftab", rollno: "1", type: "student" },
]
}, {
id: 2,
items:
[
{ id: 1, name: "Aftab", rollno: "1" },
{ id: 1, name: "Aftab", rollno: "1" },
{ id: 1, name: "Aftab", rollno: "1" },
]
}, {
id: 3,
items:
[
{ id: 1, name: "Aftab", rollno: "1" },
{ id: 1, name: "Aftab", rollno: "1" },
{ id: 1, name: "Aftab", rollno: "1" },
]
},
]
arrayData.forEach((node) => {
node.items.forEach((item) => {
if(item.type === 'teacher') {
item.rollno = null;
}
})
});
console.log(arrayData)
当类型为 teacher
时删除 rollno
。
let arrayData = [
{
id: 1,
items:
[
{ id: 1, name: "Aftab", rollno: "1", type: "student" },
{ id: 1, name: "Aftab", rollno: "1", type: "teacher" },
{ id: 1, name: "Aftab", rollno: "1", type: "student" },
]
}, {
id: 2,
items:
[
{ id: 1, name: "Aftab", rollno: "1" },
{ id: 1, name: "Aftab", rollno: "1" },
{ id: 1, name: "Aftab", rollno: "1" },
]
}, {
id: 3,
items:
[
{ id: 1, name: "Aftab", rollno: "1" },
{ id: 1, name: "Aftab", rollno: "1" },
{ id: 1, name: "Aftab", rollno: "1" },
]
},
]
arrayData.forEach((node) => {
node.items.forEach((item) => {
if(item.type === 'teacher') {
delete item.rollno;
}
})
});
console.log(arrayData)
let array = [
{
id:1,
items:
[
{id: 1, name:"Aftab", rollno:"1", type:"student"},
{id: 1, name:"Aftab", rollno:"1", type:"teacher"},
{id: 1, name:"Aftab", rollno:"1", type:"student"},
]
},{
id:2,
items:
[
{id: 1, name:"Aftab", rollno:"1"},
{id: 1, name:"Aftab", rollno:"1"},
{id: 1, name:"Aftab", rollno:"1"},
]
},{
id:3,
items:
[
{id: 1, name:"Aftab", rollno:"1"},
{id: 1, name:"Aftab", rollno:"1"},
{id: 1, name:"Aftab", rollno:"1"},
]
}]
const recurse = (arr, repl) => arr.map(item =>
item.items instanceof Array
? {
items: recurse(item.items, repl)
}
: repl(item)
)
const updatedArray = recurse(array, (item) => (
item.type !== 'teacher' ? item: {...item, rollno: 'updated whatever'})
);
console.log('updatedArray', updatedArray);