更新時間:2021-07-27 17:08:48 來源:動力節點 瀏覽931次
filter()遍歷注意事項:
1.未被賦值的元素不會被遍歷到
2.在遍歷開始后添加到數組的元素不會被遍歷到
3.被刪除的元素不會被遍歷到
4.在遍歷該項之前,可以更改該項值
<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>
結果為空數組
雖然a[5]的輸出是unfined,但是a[5]作為未被賦值項,不會被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>
結果:[undefined,undefined,undefined]
數組未被賦值項的undefined和顯式賦值undefined是不同的。這里的3,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 == 0)a[9] = 10;
return !(value%2);
},obj);
console.log(result);
</script>
結果:[2,4,6,8]
雖然在遍歷到第一個元素時,就為數組添加了新元素a[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)delete a[1];
return !(value%2);
},obj);
console.log(result);
</script>
結果:[4,6,8]
索引號1被刪除,不會出現在遍歷中
打印數組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>
結果:[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>
結果:[2,4,6,8]
某個項值在遍歷之后更改,就已經來不及了
以上就是動力節點小編介紹的"數組Filter的函數",希望對大家有幫助,想了解更多可查看Filter過濾器。動力節點在線學習教程,針對沒有任何Java基礎的讀者學習,讓你從入門到精通,主要介紹了一些Java基礎的核心知識,讓同學們更好更方便的學習和了解Java編程,感興趣的同學可以關注一下。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習