不符合指定条件,可能是指定数组array中的某一项不符合某一值的要求;或者是拿另一个数组arr对比,要求array只留下复合arr中的值或者删除掉复合arr中的值。
1.不符合某一值的要求
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>删除数组中符合指定条件的元素</title>
</head>
<body>
<script>
let array = [
{ name:'小红', age:17 },
{ name:'小李', age:28 },
{ name:'小刘', age:16 },
{ name:'小张', age:31 },
{ name:'小赵', age:15 },
]
//只留下年龄小于20的。
for( let i=0,len = array.length; i < len; i++ ){
if(array[i].age>20){
console.log('删除元素:姓名:',array[i].name,'年龄:',array[i].age)
array.splice(i,1)
i--
len--
}
}
console.log('array:',array) //打印,符合条件.
</script>
</body>
</html>
打印结果:
当i--之后,array的长度已经发生了改变,所以定义的len的值已经不准确,也要跟着减去1.
2(1). 只留下在某一个指定数组范围内的元素。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>删除数组中符合指定条件的元素</title>
</head>
<body>
<script>
let array = [
{ name:'小田', id:1 },
{ name:'小红', id:2 },
{ name:'小李', id:3 },
{ name:'小刘', id:4 },
{ name:'小张', id:5 },
{ name:'小赵', id:6 },
]
//只留下id属于 [1, 3, 5, 7 ] 中的元素
let arr = [1, 3, 5, 7 ]
for( let i=0,len = array.length; i < len; i++ ){
for(let j=0; j < arr.length; j++){
if(array[i].id == arr[j]){
break
}else if(j == arr.length-1){
console.log('删除元素:姓名:',array[i].name,'id:',array[i].id)
array.splice(i,1)
i--
len--
}
}
}
console.log('array:',array) //打印,符合条件。
</script>
</body>
</html>
既然是只留下,所以 判断出符合要求的时候,要break掉里边这一层的循环,当j == arr.length-1时,说明都已经对比过了,array[i]并不满足数组中的条件,老样子 i--,len--
打印结果:
2(1). 删除在某一个指定数组范围内的元素.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>删除数组中符合指定条件的元素</title>
</head>
<body>
<script>
let array = [
{ name:'小田', id:1 },
{ name:'小红', id:2 },
{ name:'小李', id:3 },
{ name:'小刘', id:4 },
{ name:'小张', id:5 },
{ name:'小赵', id:6 },
]
//删除id属于 [1, 3, 5, 7 ] 中的元素
let arr = [1, 3, 5, 7 ]
for( let i=0,len = array.length; i < len; i++ ){
for(let j=0; j < arr.length; j++){
if(array[i].id == arr[j]){
console.log('删除元素:姓名:',array[i].name,'id:',array[i].id)
array.splice(i,1)
i--
len--
break
}
}
}
console.log('array:',array) //打印,符合条件。
</script>
</body>
</html>
删除某一元素之后, array数组长度改变,内层的for循环已经没必要继续后边的循环了。
打印结果: