Javascript 删除包含特定单词的对象/字段
我有一个JSON文件;我想删除所有字段或对象,它们的名称是一个特定的单词,比如test,然后返回剥离的JSON文件;如何在Node.JS中执行此操作 下面是我的JSON文件的一个示例:Javascript 删除包含特定单词的对象/字段,javascript,json,node.js,Javascript,Json,Node.js,我有一个JSON文件;我想删除所有字段或对象,它们的名称是一个特定的单词,比如test,然后返回剥离的JSON文件;如何在Node.JS中执行此操作 下面是我的JSON文件的一个示例: { "name": "name1", "version": "0.0.1", "storage": { "db": { "test": "STRING", "tets2": "STRING", },
{
"name": "name1",
"version": "0.0.1",
"storage": {
"db": {
"test": "STRING",
"tets2": "STRING",
},
"test": {
"test11": "STRING",
"test2": {
"test3": "0",
"test4": "0"
},
"test5": {
"test6": "0",
"test7": "0"
}
},
"test8": {
"test9": "STRING",
"test10": "STRING"
}
}
}
所需输出:
{
"name": "name1",
"version": "0.0.1",
"storage": {
"db": {
"tets2": "STRING",
},
"test8": {
"test9": "STRING",
"test10": "STRING"
}
}
}
我尝试了下面的方法,但我不知道如何使用typeof并检查它是否是一个object,请深入树中!在这方面你能帮我吗
var new_json = config;
async.each(Object.keys(config), function(key) {
if (key == "test") {
delete new_json[key];
}
while (typeof (new_json[key]) == "object") {
// How can I handle it here
}
});
console.log("done!");
下面是递归代码。但您需要列出可接受的字段或不可接受的字段,并在此基础上,如果您知道不可接受的字段,则需要更改以下条件,然后使用以下条件
unAcceptableFields.indexOf(key) > 0
var acceptableFields = ["name","version","storage","db", "test9", "test10","tets2", "test8", "test9", "test10" ];
console.log(removeUnwantedFields(testObject, acceptableFields));
function removeUnwantedFields(jsData,acceptableFields) {
var key;
if (jsData) {
for (key in jsData) {
if (acceptableFields.indexOf(key) == -1) {
delete jsData[key];
}
else if(typeof jsData[key] === "object"){
jsData[key] = removeUnwantedFields(jsData[key],acceptableFields);
}
}
}
return jsData;
}
请参考此URL,此函数应执行以下操作:
function clean(obj,target) {
var tmpobj = obj;
for (var key in tmpobj) {
if (key === target) {
delete obj[key];
}
else if (typeof obj[key] === "object") {
obj[key] = clean(obj[key],target);
}
}
return obj;
}
这样称呼:
json_struct = clean(json_struct,"test")
所有字段或对象。。。那是哪一个?是要从所有对象中删除名为test的属性,还是要删除包含属性测试的对象?我要从JSON文件中删除名称为test的所有字段或对象;现在我包含了所需的输出;棘手的一点是,当我们删除一个名为test的对象时,您可以使用for in循环或object.keys函数检查对象属性,然后检查该属性是否是您要查找的,可能使用正则表达式,如果是,使用delete语句从对象中删除属性。如果我在未尝试的情况下发布了我的问题,则表示抱歉;现在我已经提到了我的尝试,我想知道你是否可以帮我!我真的很感激!文件是动态的;上面提到的例子只是一个例子!此代码甚至不适用于该特定示例!