我的演示中有一个对象。
var vm = {
a: {
module: "not test"
},
b: {
module: "test"
}
}
我需要删除具有"test"
模块名称的对象的密钥。
预期输出
vm = {
a: {
module: "not test"
}
}
这是一个小提琴:https://jsfiddle.net/kymdsj1s/
这是我的代码。我使用了delete
关键字,但它对我不起作用。
var tempModule = "test";
var vm = {
a: {
module: "not test"
},
b: {
module: "test"
}
}
deleteItem(tempModule)
function deleteItem(moduleName) {
if (Object.key(vm) == moduleName)
delete vm
}
console.log(vm)
答案 0 :(得分:3)
您正在调用delete vm
,它不会删除您的预期 - vm
是您的整个视图模型对象,如果您想删除它的b
属性,那么您可以尝试:
var tempModule = 'test';
var vm = {
a: { module: 'not test' },
b: { module: 'test' }
};
function deleteItem(moduleName) {
for (var key in vm) {
if (vm.hasOwnProperty(key) && vm[key]['module'] === moduleName) {
delete vm[key];
}
}
}
deleteItem(tempModule);
console.log(vm);
答案 1 :(得分:1)
注意,Object.key()
应为Object.keys()
;同时Object.keys()
返回一个数组,可以使用括号表示法访问该数组;例如,
Object.keys(vm)[0] // "a"
Object.keys(vm)[1] // "b"
function deleteItem(moduleName) {
Object.keys(vm).forEach(function(key) {
if (vm[key]["module"] === moduleName) delete vm[key]
})
}
var tempModule = "test";
var vm = {
a: {
module: "not test"
},
b: {
module: "test"
}
}
console.log(Object.keys(vm)[0], Object.keys(vm)[1]);
deleteItem(tempModule);
function deleteItem(moduleName) {
Object.keys(vm).forEach(function(key) {
if (vm[key]["module"] === moduleName) delete vm[key]
})
}
console.log(vm)