AngularJS/JavaScript从Localstorage数组中删除特定元素

AngularJS/JavaScript Remove specific element from Localstorage array

本文关键字:删除 元素 数组 JavaScript Localstorage AngularJS      更新时间:2023-12-31

我的LocalStorage中有一个数组,我用ngStorage操作它。我正试图从那里删除项目,但当我使用时

$localStorage.someArrayName.splice(id, 1);

只有第一个删除的项目工作正常,然后删除停止工作,我想。

我也试过这样的东西:

        if (id === $localStorage.someArrayName.length) {
            $localStorage.someArrayName.pop();
        }
        else if (id === 0) {
            $localStorage.someArrayName.shift();
        }
        else {
            $localStorage.someArrayName.splice(id, 1);
        }

但我得到了更多的错误结果

我试着从中的例子https://github.com/gsklee/ngStorage像这样:

delete $localStorage.someArrayName[id];

但它删除了这些值,我在本地存储阵列中得到了null,null,null值。然后我甚至得到了关于重复值的ng重复错误:

错误:[ngRepeat:dups]中继器中不允许重复。。。

我无法处理。我不确定这是一个小问题,还是我做错了什么。你能给我一些指导吗?提前谢谢!

这就是我的阵列保存在本地存储中的样子:

[{"content":"something"},{"content":"else"}] //etc...

所以您正在使用ng repeat来表示某个东西,并且您的id就在那里。如果在从数组中删除某个项目时使用$index作为id参数的值,则数组编号将不再相同,id=也不是您期望的值。

您也不需要pop()和shift()方法。

让你的ng重复是这样的:

<element ng-repeat="item in someThing">
    {{item.prop}} <childelem ng-click=delete($index)>delete</childelem>
</element>

如果你的功能是:

$scope.delete = function (id) {
    $localStorage.someArrayName.splice(id, 1);
};

那么你需要这样的东西:

<element ng-repeat="item in someThing">
    {{item.prop}} <childelem ng-click=delete(item)>delete item</childelem>
</element>

和:

$scope.delete = function (item) {
   $localStorage.someArrayName.splice($localStorage.someArrayName.indexOf(item), 1);
};

这将删除整个CCD_ 1从您的数组中。

不知道这是否是问题的正确方向,也不知道这是不是情况,但我希望这会对你有所帮助。顺致敬意,