兩個陣列:textArr
和 valueArr
,組合這兩個數組,形成如: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
}
你把
valueArr
的幾個判斷都寫成了choiceArr
了for
循環當i
等於0
的時候,看這句此時
2choiceArr
是[]
,choiceArr[i]
即choiceArr[0]
,為undefined
,isNull
,為undefined
,isNullNull
,所以會返回 ',此時數組的長度
已經變成了1
,然後執行下面的push之後,此時choiceArr
的值為["", "1^Q1"]
,所以for循環第一遍結束以後,choiceArr
的長度不是1
而是。
當
"1^Q1"i
等於1
時,因為choiceArr[1]
的值是,所以
的判斷為
。false
,然後執行下面的push語句,此時choiceArr
的值為["", "1^Q1", "2^Q2"]
;
當i
等於時,同
i=1的情況,循環結束之後
choiceArr為
["", "1^Q1", "2^Q2", "3^Q3"]綜上,空值
""是在
i=0如樓上所說,你的那句
if (isNull(choiceArr[i])) { choiceArr[i] = '' }
非常奇怪, 非要這麼寫的話,就加個判斷把。