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方法。这听起来真的像是一个最好的方法,它做了我想做的事情。这是最好的方法,它做了我想做的事情。它做的和问题代码一样。它从列表中删除一个项目。这就是他想要的,能够从列表中删除一个项目并移动索引。这就是诀窍它在哪里移动索引?通过写评论,我意识到我忘记了一段代码。它实际上只是删除了不需要的键,但没有移动键。感谢你让我注意到它!仍然不起作用。它的作用与问题代码相同。它从列表中删除了一项。这就是他想要的,能够从列表中删除一项列出并移动索引。这就是诀窍。它将索引移动到哪里?通过写注释,我意识到我忘记了一段代码。它实际上只是删除了不需要的键,但没有移动键。谢谢你让我注意到它!