这个问题听起来很奇怪,但我已经使用这个拦截器很长时间了。我正在尝试遍历一个在字符串中包含一系列数字的数组(我正在模拟我的想法场景,这看起来也很奇怪),然后在循环中我想获取我的对象中的数字的索引,这些数字是大于或等于75,以便以后剔除不大于或等于75的元素。
输出应为:75
和 100
。但由于某种原因,输出是100
。我究竟做错了什么?我什至反向消除,因为如果我在 lopp 内消除,我就会遇到问题。
number="75";
aIndex=[];
aData=
[
{
"number":"75"
},
{
"number":"50",
},
{
"number":"100"
}
];
for(var i in aData){
let data=parseInt(aData[i].number);
let number=parseInt("75");
console.log(data);
console.log(number);
console.log(data <=number)
if(data<=number){
console.log(data , "<=", number)
let index=aData.indexOf(aData[i]);
aIndex.push(index);
console.log("index",index);
}
}
for(var n = aIndex.length -1; n >= 0 ; n--){
aData.splice(aIndex[n], 1);
}
console.log(aData);
最佳答案
您当前测试是否 data<=number
,如果是这样,push
索引为 aIndex
然后拼接出该索引。如果您想保持相等的数字,请使用 <
相反。
number="75";
aIndex=[];
aData=
[
{
"number":"75"
},
{
"number":"50",
},
{
"number":"100"
}
];
for(var i in aData){
let data=parseInt(aData[i].number);
let number=parseInt("75");
console.log(data);
console.log(number);
console.log(data <number)
if(data<=number){
console.log(data , "<=", number)
let index=aData.indexOf(aData[i]);
aIndex.push(index);
console.log("index",index);
}
}
for(var n = aIndex.length -1; n >= 0 ; n--){
aData.splice(aIndex[n], 1);
}
console.log(aData);
或者,您可以使用filter
而不是手动splice
ing,这可能很乏味且容易出错:
const aData = [{
"number": "75"
},
{
"number": "50",
},
{
"number": "100"
}
];
const aDataFiltered = aData.filter(({ number }) => Number(number) >= 75);
console.log(aDataFiltered);
关于javascript - 过滤大于或等于某个数字(该数字被省略)的数字然后删除它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55447664/