删除数组元素并将它们添加回原来的位置
Remove array elements and add them back to where they were
我试图从数组中删除元素,同时记住它们的位置,稍后再添加回来。到目前为止,我有一段代码:
var my_array = ['A', 'B', 'C', 'D', 'E'];
var removed_elements = [];
// Assuming letter provided exists in my_array
function remove_element(letter) {
for (var index in my_array) {
if (my_array[index] == letter) {
break;
}
}
var removed_element = {
index: index,
letter: letter
}
removed_elements.push(removed_element);
my_array.splice(index,1);
}
// Assuming letter provided exists in removed_elements
function add_element(letter) {
for (var index in removed_elements) {
console.log('test');
if (removed_elements[index].letter == letter) {
console.log(removed_elements[index]);
break;
}
}
my_array.splice(removed_elements[index].index,0,removed_elements[index].letter);
}
只要我一次删除一个元素,并在删除另一个元素之前将其添加回来,它就可以正常工作。但是,当我开始连续删除多个元素时,为已删除的元素(不是第一个,而是后续元素)保存的索引与删除时my_array
的状态相关,而不是与my_array
的初始状态绝对相关,这可能会导致问题。
例如,如果删除'B'
和'D'
并添加'D'
和'B'
,则最终得到的是['A', 'B', 'C', 'E', 'D']
而不是['A', 'B', 'C', 'D', 'E']
。
这里有一个jsfiddle显示的问题
对于my_array
,无论我删除或添加了多少元素,我都应该更改哪些修改,以使其最终处于初始状态,以及如何更改
我想过在删除时存储被删除元素周围的元素信息,并在添加时将其用作额外信息,但不知道是否有更好的方法。
我根本不会删除它们:
var my_array = ['A', 'B', 'C', 'D', 'E'];
var removed = [];
function remove_element(letter) {
var i = my_array.indexOf(letter);
if(i > -1) {
removed.push(i);
}
}
function add_element(letter) {
var i = my_array.indexOf(letter);
if(i > -1) {
removed.splice(removed.indexOf(i), 1);
}
}
function get_array() {
return my_array.filter(function(x, i) {
return removed.indexOf(i) === -1;
});
}
相关文章:
- jquery试图按名称获取按钮位置
- 我可以获得相对于被点击元素的确切点击位置吗
- 谷歌地图固定位置覆盖
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 循环比赛位置算法
- es6 相当于下划线查找位置
- jQuery循环在特定位置暂停
- 引导程序:在导航栏中,显示悬停在单个位置的基于Li Link的不同内容
- 自定义函数中的光标位置
- 安卓平台上的QWebView HTML5地理位置
- DIV并排,位置不正确
- 谷歌地图api拖动路线再次回到原来的位置
- 删除数组元素并将它们添加回原来的位置
- 从 DOM 中删除元素并将它们添加回原来的位置
- 如果一个项目没有被拖到一个特定的位置,那么让它回到原来的位置
- 将一个工作的jQuery表单复制到另一个位置,但只复制原来的工作
- jQuery Lavalamp问题:当链接被点击,新的php内容被加载,滑块跳回原来的位置(新手q)
- 为什么添加rect然后设置它的左和顶部会导致一个可选择的'ghost'请保持原来的位置
- 我怎样才能把元素放回原来的位置?
- 如何在点击时将动画恢复到原来的大小和位置