Google Apps Script数值拼接问题:如何实现数值串联而非算术相加
问题:如何实现数值拼接得到55而非10?
我需要将数值拼接(最终得到数值55,而非字符串类型的"55"),查文档只找到字符串拼接的方案:用+=运算符或concat()函数。当前脚本里用number_1 += number_2得到的是10,但期望value_4为55,求解决办法。
表格说明
表格包含表头id、value_1、value_2、value_3,对应数据行内容为1、2、3、4。
当前脚本
function getDatabaseAsObjectArray() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName('Sheet1'); const values = sheet.getDataRange().getValues(); const headers = values[0]; const databaseAsObjectArray = []; for (let i = 1; i < values.length; i++) { const entry = {}; for (let j = 0; j < headers.length; j++) { const key = headers[j]; if (key === '') continue; entry[key] = values[i][j]; } var number_1 = 5 var number_2 = 5 entry['value_4'] = number_1 += number_2 databaseAsObjectArray.push(entry); console.log(entry); } }
当前输出
{ id: 1, value_1: 2, value_2: 3, value_3: 4, value_4: 10 }
期望结果
value_4 = 55
解决方案
你需要的不是数值加法(5+5=10),而是将两个数值拼接成数字55,核心思路是先把数值转为字符串完成拼接,再转回数值类型:
修改关键代码段
将脚本中设置value_4的部分替换为以下任意一种写法:
写法1:显式转字符串再转数字
var number_1 = 5 var number_2 = 5 entry['value_4'] = Number(number_1.toString() + number_2.toString());
写法2:模板字符串简洁写法
var number_1 = 5 var number_2 = 5 entry['value_4'] = +(`${number_1}${number_2}`);
修改后的完整脚本
function getDatabaseAsObjectArray() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName('Sheet1'); const values = sheet.getDataRange().getValues(); const headers = values[0]; const databaseAsObjectArray = []; for (let i = 1; i < values.length; i++) { const entry = {}; for (let j = 0; j < headers.length; j++) { const key = headers[j]; if (key === '') continue; entry[key] = values[i][j]; } var number_1 = 5 var number_2 = 5 entry['value_4'] = +(`${number_1}${number_2}`); databaseAsObjectArray.push(entry); console.log(entry); } }
说明
+=是数值加法运算符,只会执行加法运算;而拼接数值本质是先做字符串拼接,再转回数值类型。- 两种写法都能实现把5和5拼接成数值55,写法2更简洁直观。
内容的提问来源于stack exchange,提问作者user14155947
相关产品推荐
相关产品推荐

