導航:首頁 > 編程語言 > js數組遍歷

js數組遍歷

發布時間:2024-09-17 19:38:18

js,樹形數組 遍歷獲取某個節點,跪求大神

這就是最基礎的遍歷

varGetByID=function(Data,ID)
{
varDeep,T,F;
for(F=Data.length;F;)
{
T=Data[--F]
if(ID===T.id)returnT
if(T.children)
{
Deep=GetByID(T.children,ID)
if(Deep)returnDeep
}
}
}

GetByID(a,'2016')

㈡ 詳解JS中常見的5 種 for 循環

for 循環在平時開發中使用頻率最高的,前後端數據交互時,常見的數據類型就是數組和對象,處理對象和數組時經常使用到 for 遍歷,因此需要徹底搞懂這 5 種 for 循環。它們分別為:

1、for
for 循環是出現最早,也是應用最普遍的一個遍歷,能夠滿足絕大多數的遍歷。可以遍歷 數組、對象、字元串,示例:

2、for ... in
for ... in 是在 ES5 中新增的,以任意順序迭代一個對象的除Symbol以外的可枚舉屬性,包括繼承的可枚舉屬性。

3、for ... of
for ... of 語句在可迭代對象(包括 Array、Map、Set、String、TypedArray、arguments 對象等等)上創建一個迭代循環,調用自定義迭代鉤子,並為每個不同屬性的值執行語句。

4、for await...of
創建一個循環,該循環遍歷非同步可迭代對象以及同步可迭代對象,包括內置的 String、Array,類數組對象(arguments 或 nodeList),TypedArray, Map, Set 和用戶定義的非同步/同步迭代器。
它使用對象的每個不同屬性的值調用要執行的語句來調用自定義迭代鉤子。
類似於 await 運算符一樣,該語句只能在一個async function 內部使用

5、forEach
forEach 是ES5版本發布的,按升序為數組中含有效值的每一項執行一次回調函數,那些已刪除或者未初始化的項將被跳過(例如在稀疏數組上),一般認為是 普通for循環 的加強版。

6、map
遍歷時可以返回一個新數組,新數組的結果是原數組中每個元素都調用一次提供的函數後返回的值。

1、使用場景差異
for循環是最早最原始的循環遍歷語句,for 內部定義一個變數,按照條件進行循環遍歷,通常是數組的長度,當超過長度時就停止循環,一般遍歷的都是數組或類數組。
遍歷對象時,由於對象沒有長度,所以使用 Object.keys() 獲取對象的所有屬性,以數組形式返回。
for / in主要是用來遍歷對象上的可枚舉屬性,包括原型對象上的屬性,按任意順序進行遍歷,遍歷對象時獲取到的是屬性的鍵值,遍歷的是數組,數組的下標當做鍵值。
for / of用於遍歷可迭代對象的數據,包括 Array、Map、Set、String、TypedArray、arguments 對象等等。
for await...of用於遍歷非同步可迭代對象,該語句只能在一個async function 內部使用。
forEach 是 for 的加升級版,使用更簡單,攜帶參數更多,但本質還是數組的循環,每個元素都執行一次回調,不會改變原數組。
map是給原數組每個元素都執行一次回調,返回一個新數組,不會改變原數組。
2、功能差異
forEach、map 不支持跳出循環,其他不支持。
for await ... of 能夠支持非同步操作,其他的不支持。
對於純對象的遍歷, for ... in 枚舉更方便。
對於數組遍歷,如果不需要索引,可以直接使用 for...of 獲取值,還可支持 break 或 return ;如果還需要索引,使用 forEach 更適合,但不支持 return。
如果是一個數組映射成另一個數組,使用 map 最合適。
3、性能差異
在測試環境、測試數據條件一致的情況下,性能排序為:
for > for of > forEach > map > for in。
for 因為沒有額外的函數調用和上下文,所以性能是最快的。
for ... of 具有 iterator 介面的數據結構,可以使用它來迭代成員,直接讀取鍵值。
forEach 是 for 的語法糖,還有許多的參數和上下文,因此會慢一些。
map 因為它返回的是一個等長的全新數組,數組創建和賦值產生的性能開銷較大。
for...in 性能最差,因為需要列舉對象的所有屬性,有轉化過程,開銷比較大。

在項目開發中,我們應該根據實際需求,去選擇一個合適的 for 遍歷。以下是一些使用建議:
如果需要把數據映射成另外一個數組,如變成對應布爾值,推薦使用 map ,不會修改原數組,使用語法簡單。
數組遍歷時,可以使用 for 、forEach 或 for...of。
遍歷的是純對象時,推薦使用 for ... in 。
如果是需要對迭代器遍歷,推薦使用 for ... of。
如果是在數組中篩選符合條件的數組,使用 fillter 。

㈢ js 使用for in 循環遍歷數組,輸出數組值時,為什麼會把我在Array.prototype上自定義的函數也一起輸出

因為標凖就是這麽定的
in操作符用於判斷指定對象上是否能夠訪問到指定鍵
又附回加到prototype上的屬性可以被__proto__指向答該prototype的對象訪問到
故for in遍歷數組會這樣
你可以使用for (var f of [])來避免這種情況發生, 缺點是for of不被早期瀏覽器支持

㈣ JS遍歷一個數組里包含數組對象然後組成三個新的數組,怎麼遍歷

const [A,B,C] = [
[{A:'a',B:'b',C:'c'},{D:'d',E:'e',F:'f'},{H:'h',I:'i',J:'j'}],
[{1:1,2:2,3:3},{4:4,5:5,6:6}],
[{A:1,B:2,C:3},{D:4,E:5,F:6},{H:7,I:8,J:9}]
];

console.log(A,B,C)

㈤ js數組如何遍歷一次,刪除部分元素

vararr=[18,45,69,22,7,56];
//比方說要來刪除上述數源組中所有的奇數
arr=arr.filter(function(v){
returnv%2==0;//只返回偶數
});
console.log(arr);
//輸出結果18,22,56

㈥ 如何遍歷一個JS對象中的所有屬性

直接用js裡面自帶的for..in就可以實現了。
varo={a:1,b:2,c:3,d:4};
for(varnameino){
console.log(name+':'+o[name]);
}
這樣就可以把o對象裡面的所以屬性專都遍屬歷一遍了。

閱讀全文

與js數組遍歷相關的資料

熱點內容
zbar源代碼編譯 瀏覽:77
聽壓縮文件小說用什麼軟體蘋果 瀏覽:892
java解析json 瀏覽:432
國外網路客服馬來西亞吉隆坡 瀏覽:362
編程裡面感嘆號是什麼意思 瀏覽:281
妖妖解除限制工具 瀏覽:648
日版蘋果5MD297JA能用嗎 瀏覽:692
qq微雲會員多少錢 瀏覽:559
默認sim卡數據電信什麼意思 瀏覽:180
卡槍代碼 瀏覽:992
億格瑞r300固件升級 瀏覽:658
最熱門的編程軟體有哪些 瀏覽:81
win764位右鍵隱藏文件 瀏覽:646
u盤有病毒文件隱藏的文件 瀏覽:725
aga屬於什麼文件 瀏覽:163
虛擬機配置文件在那 瀏覽:778
ststa面板數據怎麼做 瀏覽:540
菜鳥電腦如何在桌面上建文件夾 瀏覽:952
如何用編程貓搞魷魚游戲 瀏覽:424
蘋果手機怎麼用藍牙接收電腦文件 瀏覽:980

友情鏈接