久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

javascript - js數組處理時,總在頭部多出一個空值

瀏覽:207日期:2023-04-07 10:57:24

問題描述

需求:

兩個數組: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 }

問題解答

回答1:

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

回答2:

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

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

此時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',所以

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

的判斷為false,然后執行下面的push語句,此時choiceArr的值為['', '1^Q1', '2^Q2'];當i等于2時,同i=1的情況,循環結束之后choiceArr為['', '1^Q1', '2^Q2', '3^Q3']。

綜上,空值''是在i=0時產生的。

回答3:

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

if (choiceArr.length > 0 && isNull(choiceArr[i])) { choiceArr[i] = ’’; }

標簽: JavaScript
主站蜘蛛池模板: 林甸县| 贞丰县| 合山市| 万全县| 德格县| 江川县| 阜南县| 集安市| 中卫市| 化州市| 广昌县| 宁明县| 出国| 罗田县| 土默特左旗| 塘沽区| 贡觉县| 崇义县| 三穗县| 页游| 兴隆县| 镶黄旗| 贵南县| 东城区| 新邵县| 阳谷县| 高尔夫| 武平县| 阜平县| 鄄城县| 交城县| 东海县| 新绛县| 无为县| 宁都县| 阿合奇县| 湄潭县| 紫金县| 景德镇市| 潍坊市| 集安市|