[英]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)
并重新分配DobArr
来removeByIndex(DobArr, i)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.