第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

數(shù)組顯示為空,但應(yīng)該有一個元素

數(shù)組顯示為空,但應(yīng)該有一個元素

LEATH 2022-10-21 10:37:56
好的,伙計們,我在我一直在處理的一些代碼上遇到了問題。在下面的代碼中,我試圖通過控制臺記錄數(shù)組的長度,但是在打印到控制臺后,我得到數(shù)組長度的輸出 0,當(dāng)我打印數(shù)組本身時,它顯示它是空的,但我可以單擊下拉箭頭并查看其中的元素。// randomly selects card from arrayexport const selectCard = arr => {    const randomArr = Math.floor(Math.random() * arr.length);    console.log(arr.length);    console.log(arr);}記錄數(shù)組長度和內(nèi)部包含元素的空數(shù)組的圖像。為了測試發(fā)生了什么,我決定將數(shù)組記錄在一個不同的函數(shù)中,該函數(shù)位于創(chuàng)建數(shù)組的同一文件中。數(shù)組 ( blackCards) 存儲在一個對象中。let packArr = {  data: {},  packToUse: [],  whiteCards: [],  blackCards: [],};blackCards控制臺在另一個函數(shù)中記錄數(shù)組 ( ) 會記錄以下內(nèi)容:const seperatePacks = (data) => {  // add white cards to array  packArr.whiteCards.push(data.whiteCards);  // add black cards to array  packArr.blackCards.push(data.blackCards);  // console log blackCards array  console.log(packArr.blackCards);};來自不同函數(shù)的記錄數(shù)組的圖像,該函數(shù)位于創(chuàng)建和存儲數(shù)組的同一文件中。這里有更多關(guān)于我的代碼如何工作的信息。當(dāng)用戶單擊按鈕時,將激活一個事件偵聽器,該偵聽器調(diào)用最終從服務(wù)器獲取 json 的其他函數(shù),然后我將該數(shù)據(jù)添加到數(shù)組中,您可以在上面的代碼中看到。因此,既然您知道代碼是如何工作的,那么我就可以了解導(dǎo)致我更加困惑的原因。所以,在第一次點擊時,我得到了所有先前代碼和圖像組合的結(jié)果,但是如果我再次點擊同一個按鈕,或者點擊不同的按鈕,我會得到想要的結(jié)果(如果我點擊兩個按鈕我得到數(shù)組中的兩個元素,所以它工作正常)。因此,單擊兩次或多次,程序就會按應(yīng)有的方式運行。這里的任何幫助都會很棒。如果這篇文章有點磨損也很抱歉,這是我的第一篇。以下是最終調(diào)用的函數(shù)selectCardelements.packs.addEventListener("click", (e) => {  const packID = e.target.closest(".pack").id;  if (packID) {    packsToUse(packID);    // create black cards    blackCardDisplay(packArr.blackCards);  }});上面是前面提到的監(jiān)聽器,它調(diào)用下面的函數(shù),它會調(diào)用selectCard.export const blackCardDisplay = data => {    const card = `        <div class="cards card--black">            <h1 class="card--black-text card--text">${selectCard(data)}</h1>        </div>    `;}這是按下兩個按鈕后的輸出。該數(shù)組應(yīng)該包含兩個元素,但在這種情況下它只顯示一個。但是,當(dāng)我展開數(shù)組時,它顯示的長度為 2 而不僅僅是 1。單擊兩次按鈕的控制臺圖像編輯:在閱讀了一些評論后,我意識到我忘了提到的內(nèi)容blackCards是一個數(shù)組。所以我在一個數(shù)組中有一個數(shù)組。
查看完整描述

1 回答

?
暮色呼如

TA貢獻1853條經(jīng)驗 獲得超9個贊

因此,在閱讀了一些評論后,我決定實施@charlietfl 的評論,即數(shù)組可能在 ajax 調(diào)用完成之前被控制臺記錄。雖然這并沒有明確解決問題,但它讓我走上了解決方案的正確軌道。


這是我解決這個問題的方法:


我接受了關(guān)于在 ajax 調(diào)用完成之前完成控制臺日志的評論,并從那里進行了一些研究,發(fā)現(xiàn)了這篇非常簡單的文章:


https://www.programmersought.com/article/26802083505/


在這篇文章中是一個使用該setTimeout()方法的例子。


這是我的問題的最終解決方案。


export const selectCard = arr => {

    const randomArr = Math.floor(Math.random() * arr.length);


    setTimeout(() => {

        console.log(arr.length);

        console.log(arr)

    }, 1000);

}

這是在setTimeout()第一次按下按鈕時添加方法后的輸出。


解決的數(shù)組長度和數(shù)組控制臺日志的圖像

我不知道這是否是該問題的最佳解決方案,因為過去我看到有些人不贊成使用這種方法,但它對于我目前正在做的事情來說效果很好。如果有人有更好的方法來解決這個問題,我很想聽聽!


查看完整回答
反對 回復(fù) 2022-10-21
  • 1 回答
  • 0 關(guān)注
  • 231 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號