簡體   English   中英

為什么將子數組推入另一個數組時JavaScript為什么要添加額外的方括號?

[英]Why is JavaScript adding extra square brackets when I push a sub array into another array?

我正在研究涉及多維數組的CodeWars kata。 我有一個包含三個元素的數組。 每個元素都是一個具有名稱(字符串)和總和(數字)的數組。 我正在檢查數字。 如果它們超過一定數量,我想刪除具有該數字的子數組並將其放在數組的末尾。 我使用了splice()和push()。

在具有必須移動的子數組的測試用例中,該子數組被推到父數組的末尾。 但是,它還有一組額外的括號。 我想知道為什么會這樣。 由於父數組僅將子數組作為元素,因此在推送時JavaScript是否自動添加括號?

這里是一些Chrome開發工具屏幕截圖的鏈接,以及CodeWars的屏幕截圖的鏈接。 我將它們合並為一張圖像。 彈出窗口中索引2處的子數組顯示了在第一個屏幕快照中移動/推動的末尾的子數組。 第二張屏幕截圖顯示了展開的視圖。 我要附加的最終屏幕截圖是CodeWars中顯示的結果,您可以在最后一個子數組上看到雙括號。

我無法上傳圖片。 因此,這里是在線鏈接。 https://sta.sh/01tp7y7zaayi

這是發生這種情況的代碼部分。 我包括了排序。 但是,我認為它不會影響任何事情。

注意:我有一個循環遍歷這三個元素來檢查它們在注釋中的位置。 但是,我刪除了它,因為不應循環遍歷一個數組並對該數組進行更改。 我正在為此編寫一個map()方法以返回一個新數組。 但是,我注意到出現了雙括號。 因此,我沒有完成map()部分。 我試圖首先弄清楚在splice()/ push()部分中發生了什么。

var arrNew = [["Ben", sumBen], ["Amy", sumAmy], ["Sam", sumSam]];

arrNew.sort(function (a,b) {
    if (a[1] < b[1]) return  1;
    if (a[1] > b[1]) return -1;
    if (a[0] > b[0]) return  1;
    if (a[0] < b[0]) return -1;
    return 0;
});

// If someone's score is over 21, move them to the back.
var forMoving = arrNew.splice(0, 1);
arrNew.push(forMoving);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM