我有一个Javascript对象数组,我想清除键名称为id
的所有键值对。我该怎么办?
示例输入:
var s = [{
items:[{
id: 1,
items:[{
items:[{
id: 2,
items:[]
}]
}]
}],
id: 3
}]
示例输出:
var s = [{
items:[{
items:[{
items:[{
items:[]
}]
}]
}]
}]
答案 0 :(得分:2)
您可以使用像这样的递归函数:
function removeKey(obj, searchKey) {
for(objKey in obj) {
if (objKey === searchKey)
delete obj[objKey];
else if (typeof obj[objKey] === 'object')
removeKey(obj[objKey], searchKey);
}
}
removeKey(yourObj, 'id')
答案 1 :(得分:1)
您可以使用生成器美化迭代:
function* flattenItems(items) {
for(const item of items) {
yield item;
yield* flattenItems(item.items);
}
}
所以您的任务非常简单:
for(const item of flattenItems(s))
delete item.id;