更新時(shí)間:2021-07-27 17:08:48 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1097次
filter()遍歷注意事項(xiàng):
1.未被賦值的元素不會(huì)被遍歷到
2.在遍歷開(kāi)始后添加到數(shù)組的元素不會(huì)被遍歷到
3.被刪除的元素不會(huì)被遍歷到
4.在遍歷該項(xiàng)之前,可以更改該項(xiàng)值
<script>
var a = [1,2,3];
a[6] = 10;
console.log(a);//[1, 2, 3, empty × 3, 10]
var obj = {
suc:"yes",
fail:undefined
}
var result = a.filter(function(value,index){
if(value === undefined)
return obj.suc
},obj);
console.log(result);//[]
</script>
結(jié)果為空數(shù)組
雖然a[5]的輸出是unfined,但是a[5]作為未被賦值項(xiàng),不會(huì)被filter()遍歷
<script>
var a = [1,2,3,void 0,4,5,void 0,6,void 0,7];
var obj = {
suc:"yes",
fail:undefined
}
var result = a.filter(function(value,index){
if(value === undefined)
return obj.suc
},obj);
console.log(result);
</script>
結(jié)果:[undefined,undefined,undefined]
數(shù)組未被賦值項(xiàng)的undefined和顯式賦值undefined是不同的。這里的3,6,8項(xiàng)會(huì)被遍歷到
<script>
var a = [1,2,3,4,5,6,7,8,9];
var obj = {
suc:"yes",
fail:undefined
}
var result = a.filter(function(value,index){
if(index == 0)a[9] = 10;
return !(value%2);
},obj);
console.log(result);
</script>
結(jié)果:[2,4,6,8]
雖然在遍歷到第一個(gè)元素時(shí),就為數(shù)組添加了新元素a[9],但是新元素不會(huì)被遍歷到。被遍歷的元素是遍歷開(kāi)始的時(shí)候,數(shù)組的一個(gè)快照。注意這個(gè)快照只關(guān)注數(shù)組的索引項(xiàng),而不是索引項(xiàng)值,下面的例子有解釋。
<script>
var a = [1,2,3,4,5,6,7,8,9];
var obj = {
suc:"yes",
fail:undefined
}
var result = a.filter(function(value,index){
if(index == 0)delete a[1];
return !(value%2);
},obj);
console.log(result);
</script>
結(jié)果:[4,6,8]
索引號(hào)1被刪除,不會(huì)出現(xiàn)在遍歷中
打印數(shù)組a:
[1, empty, 3, 4, 5, 6, 7, 8, 9]
<script>
var a = [1,2,3,4,5,6,7,8,9];
var obj = {
suc:"yes",
fail:undefined
}
var result = a.filter(function(value,index){
if(index == 0)a[1] = 10;
return !(value%2);
},obj);
console.log(result);
</script>
結(jié)果:[10,4,6,8]
<script>
var a = [1,2,3,4,5,6,7,8,9];
var obj = {
suc:"yes",
fail:undefined
}
var result = a.filter(function(value,index){
if(index == 3)a[1] = 10;
return !(value%2);
},obj);
console.log(result);
</script>
結(jié)果:[2,4,6,8]
某個(gè)項(xiàng)值在遍歷之后更改,就已經(jīng)來(lái)不及了
以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"數(shù)組Filter的函數(shù)",希望對(duì)大家有幫助,想了解更多可查看Filter過(guò)濾器。動(dòng)力節(jié)點(diǎn)在線學(xué)習(xí)教程,針對(duì)沒(méi)有任何Java基礎(chǔ)的讀者學(xué)習(xí),讓你從入門到精通,主要介紹了一些Java基礎(chǔ)的核心知識(shí),讓同學(xué)們更好更方便的學(xué)習(xí)和了解Java編程,感興趣的同學(xué)可以關(guān)注一下。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)