如何从对象中的数组中删除项目。
应该去掉所有跳舞的爱好。 我试着用拼接。
const people = [{
id: 1,
documents: [{
id: 1,
category: [{
hobby: 'soccer'
}, {
hobby: 'dance'
}]
},
{
id: 2,
category: [{
hobby: 'soccer'
}, {
hobby: 'dance'
}]
}
]
},
{
id: 2,
documents: [{
id: 1,
category: [{
hobby: 'dance'
}, {
hobby: 'soccer'
}]
},
{
id: 2,
category: [{
hobby: 'soccer'
}, {
hobby: 'dance'
}]
}
]
}
];
people.forEach(person => {
person.documents.forEach(document => {
document.category.forEach((cat, index) => {
if (cat.hobby === 'dance') {
document.category.splice(index, 1)
}
})
})
})
console.log(people);
您的代码几乎是正确的,但是在迭代数组时使用 forEach 修改数组时会出现一个小问题。这可能导致跳过元素或不正确的结果。相反,使用 filter 方法创建一个仅包含不符合条件的元素的新数组。
people.forEach(person => {
person.documents.forEach(document => {
document.category = document.category.filter(cat => cat.hobby !== 'dance');
})
});
console.log(people);
这使用 forEach 遍历每个人、文档和类别,但不是直接修改类别数组,而是将类别数组重新分配给一个新数组,其中只有爱好不是“舞蹈”的元素。这可以防止在迭代数组时与修改数组相关的任何问题。