JavaScript-Insert&;删除对象中的元素
我有一个目标JavaScript-Insert&;删除对象中的元素,javascript,javascript-objects,Javascript,Javascript Objects,我有一个目标 var dl_items; 在输入数据的循环之后: dl_items[code] = itemObject; 我有一个数组: dl_items : { "code_A" : { "index" : 1, "status" : 2, "name" : A_data}, "code_B" : { "index" : 2, "status" : 0, "name" : B_data}, "code_C" : {
var dl_items;
在输入数据的循环之后:
dl_items[code] = itemObject;
我有一个数组:
dl_items : {
"code_A" : { "index" : 1, "status" : 2, "name" : A_data},
"code_B" : { "index" : 2, "status" : 0, "name" : B_data},
"code_C" : { "index" : 3, "status" : 1, "name" : C_data},
"code_D" : { "index" : 4, "status" : 2, "name" : D_data},
"code_E" : { "index" : 5, "status" : 4, "name" : E_data}
}
现在我想删除“dl_items[code_D]”,并将其插入到“code_A”(索引2)之后,得到如下结果:
dl_items : {
"code_A" : { "index" : 1, "status" : 2, "name" : A_data},
"code_D" : { "index" : 4, "status" : 2, "name" : D_data},
"code_B" : { "index" : 2, "status" : 0, "name" : B_data},
"code_C" : { "index" : 3, "status" : 1, "name" : C_data},
"code_E" : { "index" : 5, "status" : 4, "name" : E_data}
}
在使用循环查找代码的索引后,我尝试使用“delete”:
delete dl_items[code_D];
它成功地被删除了,但是我怎样才能将代码插入到他的新索引中呢
编辑:感谢所有人帮助我了解更多有关阵列的信息。您可以制作如下的临时变量:
tempItem = dl_items.code_D;
dl_items.code_D = dl_items.code_B;
dl_items.code_B = tempItem;
这里有一个对象,而不是数组。因此,这里没有索引的概念。 可以将对象关键帧映射到数组中,如下所示:
let array = Object.keys(dl_items);
然后可以重新排列它们的位置。因为对象没有顺序,所以需要将当前实现转换为数组:
var dl_items = [];
需要将项目添加到阵列时:
dl_items.push({ code: code, item: itemObject });
现在,与您的问题中的数组类似的数据是:
dl_items: [
{ code :"code_A", item: { index: 1, status: 2, name: "A_data" } },
{ code :"code_B", item: { index: 2, status: 0, name: "B_data" } },
{ code :"code_C", item: { index: 3, status: 1, name: "C_data" } },
{ code :"code_D", item: { index: 4, status: 2, name: "D_data" } },
{ code :"code_E", item: { index: 5, status: 3, name: "E_data" } },
]
要将带有代码_D的条目移动到带有代码_A的条目之后,请使用以下命令:
var codeDEntry = dl_items[3];
dl_items = dl_items
.filter(function(entry) {
return entry !== codeDEntry;
})
.splice(1, 0, codeDEntry);
希望这有帮助 基本上是用对象显示对象。对象中的属性实际上没有顺序。您可以对已订购的项目使用数组。这既不是数组,也不是数组
dl_items
是一个请更正你的arrayas@NinaScholz说,你可以使用一个数组,它将保存对象,这样你就可以轻松地重写你想要的索引array[3]={状态:2,名称:d_data}
,在javascript中数组是一个对象。这与JSON无关。JSON是一种用字符串编码数据的方法。我能问一下为什么使用unshift
?在w3school中,它说unshift
用于将项添加到数组的开头。我想你的新数组是:D,A,B,C,E?如果我错了,请纠正我:对不起,你完全正确。我没有正确地阅读这个问题。我修正了我的答案,谢谢。现在我将重构我的代码结构很多:DGlad我可以帮忙。