Javascript 删除数据后更新对象的对象

Javascript 删除数据后更新对象的对象,javascript,arrays,json,angular,Javascript,Arrays,Json,Angular,我陷入了一种需要更新对象的情况,真正的问题是我想用删除的项更新其索引,例如: { "selected": null, "lists": { "0": [ { "key": "Survey Meta Data" } ], "1": [ { "key": "Assessment" } ], "2": [ { "key": "Income

我陷入了一种需要更新对象的情况,真正的问题是我想用删除的项更新其索引,例如:

    {
  "selected": null,
  "lists": {
    "0": [
      {
        "key": "Survey Meta Data"
      }
    ],
    "1": [
      {
        "key": "Assessment"
      }
    ],
    "2": [
      {
        "key": "Income Survey Process"
      }
    ],
    "3": [
      {
        "key": "Appeal Process"
      }
    ]
  }
}
假设我删除了列表[0]:

现在,当前项目如下所示:

     {
  "selected": null,
  "lists": {
    //"0": [  as deleted so no need just update the others without losing data
     // {
       // "key": "Survey Meta Data"   
     // }
    //],
    "0": [ //now it gets 0
     {
        "key": "Assessment"
      }
    ],
    "1": [//now it gets 1
      {
        "key": "Income Survey Process"
      }
    ],
    "2": [//now it gets 2
      {
        "key": "Appeal Process"
      }
    ]
  }
}
app.js

   function add(data)
{
    for (var i=0;i<4;i++)
                     {

                             $scope.models.lists[i]=[{"key":data[i].id}]



 }   
                     }

function remove(key)
{
   for (var i=0;i<$scope.len;i++)
            {
                    for (var s=0;s<$scope.models.lists[i].length;s++)
                        {


                            if(key==$scope.models.lists[i][s].key) {
                               delete $scope.models.lists[i]// deleted now want to update 
                                break;
                            }
                        }
}
   }
函数添加(数据)
{

对于(var i=0;i非常简单。不要删除想要的,而是最后一个,并在要删除的元素后向后复制一个位置:

function remove(key){
    var found=false;
    var list=$scope.models.lists;
    //get the length to properly iterate, requires proper keys e.g. 0,1,2,3
    var length=+Object.keys(list).sort().reverse()[0]+1;
    //iterate over
    for (var i=0;i<length-1;i++){
        if(key===list[i][0].key || found) {
           //if found override current with next
           found=true;
           list[i]=list[i+1];
        }
     }
    //delete last one if weve found sth before, or if the last is the one to be deleted
    if(list[i][0].key===key || found){
        delete list[i];
    }
}
功能删除(按键){
var=false;
var list=$scope.models.lists;
//获取要正确迭代的长度,需要正确的键,例如0,1,2,3
var length=+Object.keys(list.sort().reverse()[0]+1;
//反复

对于(var i=0;i非常简单。不要删除想要的,而是最后一个,并在要删除的元素后向后复制一个位置:

function remove(key){
    var found=false;
    var list=$scope.models.lists;
    //get the length to properly iterate, requires proper keys e.g. 0,1,2,3
    var length=+Object.keys(list).sort().reverse()[0]+1;
    //iterate over
    for (var i=0;i<length-1;i++){
        if(key===list[i][0].key || found) {
           //if found override current with next
           found=true;
           list[i]=list[i+1];
        }
     }
    //delete last one if weve found sth before, or if the last is the one to be deleted
    if(list[i][0].key===key || found){
        delete list[i];
    }
}
功能删除(按键){
var=false;
var list=$scope.models.lists;
//获取要正确迭代的长度,需要正确的键,例如0,1,2,3
var length=+Object.keys(list.sort().reverse()[0]+1;
//反复

对于(var i=0;i在我之前的回答中,我完全没有意识到你的需要

下面是允许您删除列表中任何项目的代码(将其复制/粘贴到原始组件中,并查看控制台日志):


在我之前的回答中,我完全没有注意到你的需要

下面是允许您删除列表中任何项目的代码(将其复制/粘贴到原始组件中,并查看控制台日志):



使用数组??那么你可以简单地使用。这似乎不是一个实用的数据结构。为什么你不能只为
列表使用数组并使用数组索引呢?我只是创建了一个模式来获得这个想法,但我需要的是对象的对象而不是数组。请查看我的答案并告诉我它是否适合你。这似乎仍然是一个非常奇怪的方法。这听起来真的像是使用数组??那么你可以简单地使用。这似乎不是一个实用的数据结构。为什么你不能对
列表使用数组并使用数组索引呢?我只是创建了一个模式来了解这一点,但我需要的是对象的对象而不是数组。请查看我的答案,告诉我它是否适合你。看起来仍然是一个非常复杂的问题trange方法。这听起来真的像是一个最好的方法,它做了我想做的事情。这是最好的方法,它做了我想做的事情。它做的和问题代码一样。它从列表中删除一个项目。这就是他想要的,能够从列表中删除一个项目并移动索引。这就是诀窍它在哪里移动索引?通过写评论,我意识到我忘记了一段代码。它实际上只是删除了不需要的键,但没有移动键。感谢你让我注意到它!仍然不起作用。它的作用与问题代码相同。它从列表中删除了一项。这就是他想要的,能够从列表中删除一项列出并移动索引。这就是诀窍。它将索引移动到哪里?通过写注释,我意识到我忘记了一段代码。它实际上只是删除了不需要的键,但没有移动键。谢谢你让我注意到它!