从Javascript数组对象中删除记录
我有一个java脚本数组对象,我想从该对象中的特定索引中删除项,我有一个逗号分隔的索引字符串。问题是,当我使用从Javascript数组对象中删除记录,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有一个java脚本数组对象,我想从该对象中的特定索引中删除项,我有一个逗号分隔的索引字符串。问题是,当我使用splice删除它时,数组索引被更改,而其他索引的对象并没有被删除 var DeletedConditions="3, 5, 19, 50"; for (var k = 0; k < DeletedConditions.split(", ").length; k++) { ConditionObject.splice(DeletedConditi
splice
删除它时,数组索引被更改,而其他索引的对象并没有被删除
var DeletedConditions="3, 5, 19, 50";
for (var k = 0; k < DeletedConditions.split(", ").length; k++) {
ConditionObject.splice(DeletedConditions.split(", ")[k], 1);
}
var DeletedConditions=“3,5,19,50”;
对于(var k=0;k
DeletedConditions
字符串可以是任何内容
请帮帮我。如何完成此操作。在循环内部拼接后,始终可以减小k迭代器:
k--;
在循环内部拼接后,始终可以减小k迭代器:
k--;
var DeletedConditions=“3,5,19,50”;
var list=DeletedConditions.split(“,”)
for(var k=0;k
var DeletedConditions=“3,5,19,50”;
var list=DeletedConditions.split(“,”)
for(var k=0;kvar fruits=新数组(“苹果”、“香蕉”、“葡萄”、“橙子”、“mosambi”、“aaa”、“bbb”、“ccc”);
var DeletedConditions=“1,3,4,5”;
var indexArray=新数组;
indexArray=DeletedConditions.split(“,”);
对于(变量i=0;ivar fruits=新数组(“苹果”、“香蕉”、“葡萄”、“橙子”、“mosambi”、“aaa”、“bbb”、“ccc”);
var DeletedConditions=“1,3,4,5”;
var indexArray=新数组;
indexArray=DeletedConditions.split(“,”);
对于(变量i=0;i
首先,我建议您正式将索引转换为正式数组。如果使用字符串作为索引引用,则很容易丢失拆分。如果值未被,
然后:
首先,我建议您正式将索引转换为正式数组。如果使用字符串作为索引引用,则很容易丢失拆分。如果值未被,
然后:
如您所观察到的,从数组开头移除一个项目会将后面的元素洗牌并更改其索引。但是,如果您查看要向后删除的项目列表,那么它将首先删除后面的元素,因此索引对于靠近数组开头的元素仍然是正确的
另外,请不要在每次循环迭代中都执行.split()
操作-效率低下可能不会对包含四个数字的字符串产生太大影响,但这会使代码有点凌乱,原则上,它只是有点恶心
var DeletedConditions="3, 5, 19, 50",
delCondArr = DeletedConditions.split();
for (var k = delCondArr.length - 1; k >= 0; k--) {
ConditionObject.splice(delCondArr[k], 1);
}
如果DeletedConditions
strig可能无法排序,只需在拆分后添加一个.sort()
:
delCondArr = DeletedConditions.split().sort(function(a,b){return a-b;});
…在这种情况下,您不需要向后循环。如您所观察到的,从数组开头移除一个项目会将后面的元素洗牌并更改其索引。但是,如果您查看要向后删除的项目列表,那么它将首先删除后面的元素,因此索引对于靠近数组开头的元素仍然是正确的
另外,请不要在每次循环迭代中都执行.split()
操作-效率低下可能不会对包含四个数字的字符串产生太大影响,但这会使代码有点凌乱,原则上,它只是有点恶心
var DeletedConditions="3, 5, 19, 50",
delCondArr = DeletedConditions.split();
for (var k = delCondArr.length - 1; k >= 0; k--) {
ConditionObject.splice(delCondArr[k], 1);
}
如果DeletedConditions
strig可能无法排序,只需在拆分后添加一个.sort()
:
delCondArr = DeletedConditions.split().sort(function(a,b){return a-b;});
…在这种情况下,您不需要向后循环。复制原始数组可能是最简单的方法,在过程中忽略已删除的项。像这样的东西就行了
var DeletedConditions="3, 5, 19, 50";
DeletedConditions = DeletedConditions.split(', ');
var newConditionObject = [];
for(var k = 0; k < ConditionObject.length; ++k) {
if(DeletedConditions.indexOf(k) !== -1) { continue; }
newConditionObject.push(ConditionObject[k]);
}
// result is in `newConditionObject`
console.log(newConditionObject);
var DeletedConditions=“3,5,19,50”;
DeletedConditions=DeletedConditions.split(',');
var newConditionObject=[];
for(var k=0;k
复制原始数组可能是最简单的方法,在过程中省略已删除的项。像这样的东西就行了
var DeletedConditions="3, 5, 19, 50";
DeletedConditions = DeletedConditions.split(', ');
var newConditionObject = [];
for(var k = 0; k < ConditionObject.length; ++k) {
if(DeletedConditions.indexOf(k) !== -1) { continue; }
newConditionObject.push(ConditionObject[k]);
}
// result is in `newConditionObject`
console.log(newConditionObject);
var DeletedConditions=“3,5,19,50”;
DeletedConditions=DeletedConditions.split(',');
var newConditionObject=[];
for(var k=0;k
如果在循环中删除数组中的N个元素,则必须将循环变量减量N次。@rahul因为只有在当前元素之后的项才能获得索引移位。如果在循环中删除数组中的N个元素,则必须将循环变量减量N次。@rahul因为只有在当前元素之后的项才能获得索引我想你搞错了,我不想把它从删除的条件中删除。我有一个单独的对象要从中的给定索引中删除DeleteConditions@rahul:我在这里解释..我们如何解决数组索引问题我想你搞错了我不想从DeletedConditions中删除它。我有一个单独的对象要从中的给定索引中删除DeleteConditions@rahul:我在这里解释..我们如何解决数组索引问题这肯定会起作用,但我可以建议将if
条件反转为if(…indexOf(k)==-1){…push(…);}
(而不是continue
)?在我看来,这将是一个更直接一点。它似乎是“斯特拉