Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Javascript数组对象中删除记录_Javascript_Jquery_Arrays - Fatal编程技术网

从Javascript数组对象中删除记录

从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

我有一个java脚本数组对象,我想从该对象中的特定索引中删除项,我有一个逗号分隔的索引字符串。问题是,当我使用
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;k
var fruits=新数组(“苹果”、“香蕉”、“葡萄”、“橙子”、“mosambi”、“aaa”、“bbb”、“ccc”);
var DeletedConditions=“1,3,4,5”;
var indexArray=新数组;
indexArray=DeletedConditions.split(“,”);
对于(变量i=0;i
var 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
)?在我看来,这将是一个更直接一点。它似乎是“斯特拉