我有一个JavaScript对象:
var obj = $scope.items[0]; //$scope.items is a plain object
console.log(typeof obj) //object
在此之后,我做了一些递归并获得要附加到'obj'的路径(属性链),它被编码为字符串,如下所示:
str = ".child.splice(" + item_index + ",1)"; //item_index is an integer
我想将此应用于该对象。我试过这种方式:
var objToDelete = obj += str
console.log(typeof objToDelete) //string
我正在尝试删除普通对象中的元素,如果我以这种方式对其进行硬编码,它就会起作用:
delete $scope.items[0].child.splice(1,1);
我真正想要使用的是:
delete objToDelete; // *doesn't work*
然而这失败了,因为'objToDelete'的类型是一个字符串。
如何将'objToDelete'保留为对象并使其正常工作?
答案 0 :(得分:0)
你的最终目标是什么?会这样的吗?只需更改item_index
即可delete $scope.items[0].child.splice(item_index,1);
如果你想让它更容易使用,你可以把它包装在一个函数中:
function deleteThing(thingToDelete){
delete $scope.items[0].child.splice(thingToDelete,1);
}
然后就这样做:
deleteThing(2);
删除索引为2的项目。