Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS/JavaScript从本地存储阵列中删除特定元素_Javascript_Arrays_Angularjs - Fatal编程技术网

AngularJS/JavaScript从本地存储阵列中删除特定元素

AngularJS/JavaScript从本地存储阵列中删除特定元素,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我的LocalStorage中有一个数组,我使用ngStorage操作该数组。 我试图从那里删除项目,但当我使用 $localStorage.someArrayName.splice(id, 1); 只有第一个删除的项目工作正常,然后删除停止工作,因为我想 我也试过这样的方法: if (id === $localStorage.someArrayName.length) { $localStorage.someArrayName.pop();

我的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);
        }
delete $localStorage.someArrayName[id];
<element ng-repeat="item in someThing">
    {{item.prop}} <childelem ng-click=delete($index)>delete</childelem>
</element>
<element ng-repeat="item in someThing">
    {{item.prop}} <childelem ng-click=delete(item)>delete item</childelem>
</element>
但我得到了更糟糕的结果

我试着从下面的例子:

        if (id === $localStorage.someArrayName.length) {
            $localStorage.someArrayName.pop();
        }

        else if (id === 0) {
            $localStorage.someArrayName.shift();
        }

        else {
            $localStorage.someArrayName.splice(id, 1);
        }
delete $localStorage.someArrayName[id];
<element ng-repeat="item in someThing">
    {{item.prop}} <childelem ng-click=delete($index)>delete</childelem>
</element>
<element ng-repeat="item in someThing">
    {{item.prop}} <childelem ng-click=delete(item)>delete item</childelem>
</element>
但是它删除了这些值,我在本地存储阵列中得到了null,null,null值。然后我甚至得到了关于重复值的ng repeat错误:

错误:[ngRepeat:dupes]中继器中不允许有重复项

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

以下是保存在本地存储中的阵列的外观:

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

因此,您正在使用ng repeat进行某些操作,并且您的ID在那里。如果在从数组中删除at项时使用$index作为id参数的值,则数组编号不再相同,id也不是您所期望的

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

对你的ng重复进行分段是这样的:

        if (id === $localStorage.someArrayName.length) {
            $localStorage.someArrayName.pop();
        }

        else if (id === 0) {
            $localStorage.someArrayName.shift();
        }

        else {
            $localStorage.someArrayName.splice(id, 1);
        }
delete $localStorage.someArrayName[id];
<element ng-repeat="item in someThing">
    {{item.prop}} <childelem ng-click=delete($index)>delete</childelem>
</element>
<element ng-repeat="item in someThing">
    {{item.prop}} <childelem ng-click=delete(item)>delete item</childelem>
</element>
那么你需要这样的东西:

        if (id === $localStorage.someArrayName.length) {
            $localStorage.someArrayName.pop();
        }

        else if (id === 0) {
            $localStorage.someArrayName.shift();
        }

        else {
            $localStorage.someArrayName.splice(id, 1);
        }
delete $localStorage.someArrayName[id];
<element ng-repeat="item in someThing">
    {{item.prop}} <childelem ng-click=delete($index)>delete</childelem>
</element>
<element ng-repeat="item in someThing">
    {{item.prop}} <childelem ng-click=delete(item)>delete item</childelem>
</element>
这将删除整个
{“content”:“something”}
从你的阵列


不知道这是否是问题的正确方向,也不知道情况是否如此,但我希望这会对您有所帮助。致以最良好的祝愿

谢谢大家!!它是这样工作的!我还不能100%地向自己解释,但是:))