javascript - js數組處理時,總在頭部多出一個空值
世界只因有你
世界只因有你 2017-07-05 10:39:37
0
3
887

需求:

兩個陣列:textArrvalueArr,組合這兩個數組,形成如:1^Q1的字串。中間用\n隔開。 (準備將其傳入textarea中)

實際問題:

每次都在字串頭部多增加了一個空行,程式碼很短,居然就是找不出來,讓人氣結。請大家幫忙看看。謝謝!

      choicesToString () {
        let textArr = ['Q1', 'Q2', 'Q3'];
        let valueArr = [1, 2, 3];
        let choiceArr = []
        for (let i = 0; i < textArr.length; i++) {
          if (isNull(valueArr[i])) { valueArr[i] = '' }
          if (isNull(choiceArr[i])) { choiceArr[i] = '' }
          if ((valueArr[i] === '') && (choiceArr[i] === '')) { continue }
          choiceArr.push(valueArr[i] + '^' + textArr[i])
          console.log(`${i}: ${choiceArr}`)
        }
        // TODO: BUG! Add an empty cell at the first position. FUCK!!!
        // 难道要我被迫加上这段可耻的代码...
        // choiceArr.splice(0, 1)

        console.log(choiceArr)
        return choiceArr.toString().split(',').join('\n')
      }
      
     isNull (arg) {
         return !arg && arg !== 0 && typeof arg !== 'boolean' ? true : false
     }
世界只因有你
世界只因有你

全部回覆(3)
滿天的星座

你把 valueArr 的幾個判斷都寫成了 choiceArr

曾经蜡笔没有小新

for循環當i等於0的時候,看這句

if (isNull(choiceArr[i])) { choiceArr[i] = '' }

此時choiceArr[]choiceArr[i]choiceArr[0],為undefinedisNull,為undefinedisNullNull,所以會返回 ',此時數組的長度已經變成了1,然後執行下面的push之後,此時choiceArr的值為["", "1^Q1"],所以for循環第一遍結束以後,choiceArr的長度不是1而是

2

i等於1時,因為choiceArr[1]的值是

"1^Q1"

,所以

if (isNull(choiceArr[i])) { choiceArr[i] = '' }
的判斷為false,然後執行下面的push語句,此時choiceArr的值為
["", "1^Q1", "2^Q2"];i等於時,同i=1的情況,循環結束之後choiceArr["", "1^Q1", "2^Q2", "3^Q3"]

綜上,空值""是在i=0

時產生的。 🎜
Peter_Zhu

如樓上所說,你的那句if (isNull(choiceArr[i])) { choiceArr[i] = '' }非常奇怪, 非要這麼寫的話,就加個判斷把。

if (choiceArr.length > 0 && isNull(choiceArr[i])) { choiceArr[i] = ''; }
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!