Zwei Arrays: textArr
和 valueArr
,组合这两个数组,形成如:1^Q1
的字符串。中间用n
getrennt. (Vorbereitung zur Übergabe an den Textbereich)
Jedes Mal wird am Anfang der Zeichenfolge eine zusätzliche Leerzeile hinzugefügt. Der Code ist sehr kurz, aber ich kann ihn nicht finden, was frustrierend ist. Bitte helfen Sie und schauen Sie vorbei. Danke!
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
的时候,看这句此时
choiceArr
是[]
,choiceArr[i]
即choiceArr[0]
,为undefined
,isNull
会返回true
,所以会执行choiceArr[i] = ''
,此时数组的长度已经变成了1
,然后执行下面的push之后,此时choiceArr
的值为["", "1^Q1"]
,所以for循环第一遍结束以后,choiceArr
的长度不是1
而是2
。当
i
等于1
时,因为choiceArr[1]
的值是"1^Q1"
,所以的判断为
false
,然后执行下面的push语句,此时choiceArr
的值为["", "1^Q1", "2^Q2"]
;当
i
等于2
时,同i=1
的情况,循环结束之后choiceArr
为["", "1^Q1", "2^Q2", "3^Q3"]
。综上,空值
""
是在i=0
时产生的。如楼上所说,你的那句
if (isNull(choiceArr[i])) { choiceArr[i] = '' }
非常奇怪, 非要这么写的话,就加个判断把。