如何在给定字符串的情况下从嵌套对象中删除元素?

时间:2016-10-26 14:03:43

标签: javascript angularjs

我有一个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'保留为对象并使其正常工作?

1 个答案:

答案 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的项目。