React二維數(shù)組的幾種聲明和使用過程
React二維數(shù)組的幾種聲明和使用
React中對(duì)二維數(shù)組的聲明和使用的方式有多種,其中存在一些常見的錯(cuò)誤使用情況。
例如const map=[[]] 這樣定義二維數(shù)組,本篇文章給大家解析一下react數(shù)組使用的正確方法和錯(cuò)誤使用的錯(cuò)誤原因。
如果我們要使用的二維數(shù)組是有默認(rèn)值的,那我們可以直接在聲明時(shí)賦值,例如這樣:
const map = [[1,2],[3,4],[5,6]];
這個(gè)map變量的值是可變的,但是它的結(jié)構(gòu)是不可變的,要修改它可以這樣寫:
map[0] = [1,2,3]
但是,如果我們這樣寫就會(huì)報(bào)錯(cuò):
map[3] = [1,2,3]
因?yàn)槲覀儗?duì)map的定義初始化的時(shí)候,按照react的語法,只要值不為空,那么數(shù)組的大小就是不可變的,但是數(shù)組的值是可變的。所以我們給map[3]賦值,這個(gè)map[3]并不存在,map只有0到2三個(gè)值,就會(huì)報(bào)錯(cuò)。
但是對(duì)于map[0],[1,2]是它的一個(gè)值,這個(gè)值可以被整體替換為 [1,2,3],沒有問題。
按這個(gè)道理
如果我們這樣做也是會(huì)報(bào)數(shù)組溢出的:
map[3][4] = 1;
如果我們想要數(shù)組的大小動(dòng)態(tài)可變?cè)趺崔k呢,我們可以這樣來初始化:
const map = []
這里把map首先定義為一個(gè)數(shù)組,這個(gè)時(shí)候[]內(nèi)沒有值,就代表這是一個(gè)沒有初始值的數(shù)組,其數(shù)組大小不是0,而是不確定,可以動(dòng)態(tài)賦值,例如:
map[0] = []
這里我們給map加了一個(gè)0號(hào)元素,值也是一個(gè)不確定大小的未初始化數(shù)組,這個(gè)數(shù)組也可以被動(dòng)態(tài)添加值:
map[0] [0] = 1;
但是我們要注意,當(dāng)map[0]被賦值時(shí),map的大小才會(huì)擴(kuò)展為1,如果沒有給map[0]賦值,直接給map[1]賦值時(shí)是不能成功的:
按照這個(gè)理論
如果我們要初始化一個(gè)動(dòng)態(tài)擴(kuò)展的二維數(shù)組,我們應(yīng)該這樣做:
const map = [];
//在使用時(shí),動(dòng)態(tài)擴(kuò)展
for(var i=0;i<count;i++){
map[i] = [];
}
我們要給map定義為一個(gè)一維數(shù)組,然后動(dòng)態(tài)添加數(shù)組元素作為其元素值。
注意,不能這樣寫:
const map = [[]];
看似定義了一個(gè)空的二維數(shù)組,實(shí)則不然,這個(gè)寫法的意思是定義了一個(gè)數(shù)組,數(shù)組中只有一個(gè)數(shù)組類型的元素,外層[]中的[]代表了一個(gè)元素,相當(dāng)于給了外層數(shù)組初始值,這個(gè)數(shù)組就不是動(dòng)態(tài)可擴(kuò)展的了,而是外層只能有一個(gè)元素,這時(shí)map[1]就是不存在也不可賦值的。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
React類組件中super()和super(props)的區(qū)別詳解
這篇文章給大家詳細(xì)介紹了React類組件中super()和super(props)有什么區(qū)別,文中通過代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-01-01
React自定義實(shí)現(xiàn)useWatch的方式和特點(diǎn)
這篇文章主要介紹了React自定義實(shí)現(xiàn)useWatch的方式和特點(diǎn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2025-05-05
React hooks如何清除定時(shí)器并驗(yàn)證效果
在React中,通過自定義Hook useTimeHook實(shí)現(xiàn)定時(shí)器的啟動(dòng)與清除,在App組件中使用Clock組件展示當(dāng)前時(shí)間,利用useEffect鉤子在組件掛載時(shí)啟動(dòng)定時(shí)器,同時(shí)確保組件卸載時(shí)清除定時(shí)器,避免內(nèi)存泄露,這種方式簡(jiǎn)化了狀態(tài)管理和副作用的處理2024-10-10
React中事件綁定的5種實(shí)現(xiàn)方式和優(yōu)劣對(duì)比全攻略
在React中,事件綁定不僅僅是把函數(shù)和元素連接起來那么簡(jiǎn)單,它關(guān)系到很多方面,下面我們就來一起來看看React事件綁定的5種主要方式,以及它們各自的優(yōu)缺點(diǎn)吧2026-01-01
React?Native?中限制導(dǎo)入某些組件和模塊的方法
這篇文章主要介紹了React?Native?中限制導(dǎo)入某些組件和模塊的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
React組件如何優(yōu)雅地處理異步數(shù)據(jù)詳解
這篇文章主要為大家介紹了React組件如何優(yōu)雅地處理異步數(shù)據(jù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10

