js一維陣列轉二維陣列

2021-08-20 05:46:22 字數 1429 閱讀 7327

使用場景舉例:介面返回乙個陣列物件,展示時每行固定顯示n個,則可將返回的陣列轉成二維陣列[[...n], [...n]...]的形式迴圈展示。

a.陣列元素為基本型別:

let basearray = [1, 2, 3, 4, 5, 6, 7, 8];

len len = basearray.length;

let n = 4; //假設每行顯示4個

let linenum = len % 4 === 0 ? len / 4 : math.floor( (len / 4) + 1 );

let res = ;

for (let i = 0; i < linenum; i++)

console.log(res);

結果:

b.陣列元素為物件

當陣列元素為物件的時候,就不能使用slice方法進行擷取了,因為slice屬於淺拷貝,導致的問題就是你修改了新生成的陣列物件值,會影響原始陣列中物件的值,就比如下。但很多時候我們並不想影響原來的值。

現在來說說 陣列的深拷貝和淺拷貝之我的理解 。簡單的說深拷貝就是完全跟被拷貝物件脫離了關係,你修改新的物件內容,不會影響原來的物件,而且淺拷貝呢,貌似是生成了乙份新的,但是實際和原來的還是同乙個物件,只是變了個名字而已,所以你通過新名字來操作物件實際還是操作的原來的物件。嗯,有這樣乙個認識就可以了。

深拷貝和淺拷貝主要是針對物件型別,基本型別並不涉及。具體的可以看看記憶體堆疊相關知識,也可以對深淺拷貝有更深的理解,這裡就不贅述了。

好了,回歸正題,那就是如何深拷貝物件陣列。

這裡就介紹一種通過json.stringify和json.parse方法。

所以舉例的使用場景就可以改為如下:

let objarray = [, , , , , , ];

let len = objarray.length;

let n = 4; //假設每行顯示4個

一維陣列轉二維陣列

假設你一維陣列的大小為100 你需要把它拆分為20 5的乙個二維矩陣。不妨這樣去實現 假設一維陣列的下標為x,可以把它在邏輯上轉換為二維陣列的下標 m x 5 n x 5 比如你要找第一行第二列的元素,那在一維陣列中就是a 1 轉化為二維座標就是b 0 1 其實多維陣列和一維陣列一樣,在計算機中都是...

一維陣列轉二維陣列

在專案上,會遇到將乙個一維陣列的資料,按板塊的分布排版這一類的需求。這種需求的資料往往就是陣列元素中含有相同字段,以這相同字段分類即可達到需求。以以下資料為例 將let oldarr 轉換為 let newarr 即將乙個一維陣列轉為二維陣列 不難發現,部分陣列元素字段存在相同的值,我們以type來...

一維陣列轉二維陣列

vue專案中經驗 1.後台傳送過來的json檔案是一維陣列 2.我需要像swiper傳遞過去資料 注 我的swiper裡面放的不是,而是乙個個小小的選項 如下圖 一頁存放8個,有2頁,但是傳遞給我的json資料是乙個一維陣列所以需要改成二維陣列 然後再v for這個二維陣列,之後再v for取出小o...