繁体   English   中英

从数组JavaScript中删除元素

[英]Remove elements from array javascript

我正在尝试从日期数组中删除/删除元素。 但是,由于某种原因,最后一个元素没有被删除。 我将在下面给出一个示例:

我有一个日期数组,如arr [1900-12-20,1898-12-20,1900-12-20]; 请考虑数组中的元素是日期而不是字符串。

这是我的代码-我的代码采用一组日期(input1 [0])和一个日期属性(如“ 2014-09-30”(input1 [1])),并返回一组日期(output1)

var DobArr = input1[0];
var passedInDt = input1[1];
var prt_year = 0;
var ageInYears = 0;

//Get year for valuation date
valYear = passedInDt.getFullYear();

for (i=0; i<DobArr.length; i++){

    prt_year = DobArr[i].getFullYear();
    ageInYears = valYear - prt_year;

    if (ageInYears >= 110){
    removeByIndex(DobArr, i);
 }
}
output1 = DobArr;

function removeByIndex(arr, index) {
  arr.splice(index, 1);
}

所以代码要做的是检查ageInYears> = 110,如果是,那么我想从数组中删除该元素。

让我在这里做个旁注,Oracle产品将调用此脚本,而input1 [0]是日期元素的数组。 Oracle产品中的input1 [0]看起来像input1 [0] = {1900-12-20} {1898-12-20} {1900-12-20}

运行我的代码后,DobArr应该为空,而其值为{1898-12-20} ...为什么? 所有元素都通过ageInYears> = 110,为什么还剩下元素? 我很困惑。 拼接功能应从数组中完全删除元素。 请帮助并提前致谢。

谢谢,

按索引删除元素后- 所有索引都移至1位 ...重复几次,您会发现循环索引(在这种情况下,i)正在按旧索引计数移动,而当前索引计数已经更改。 所以您要做的就是更新i变量:

if (ageInYears >= 110)
{
    removeByIndex(DobArr, i); i--;
}

您要删除的第一件事搜索元素:

var numArray = [2,3,5,6];
var index = numArray.indexOf(5);;

现在; 使用splice()方法:

if (index > -1) {
 array.splice(index, 1);
}

splice方法返回一个数组,因此您必须返回arr.splice(index, 1)并重新分配DobArrremoveByIndex(DobArr, i)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM