![](/img/trans.png)
[英]I want to combine three javascript variable and display this in a textbox as default value
[英]I want to combine JavaScript Objects with the same variable name
現在,如果我運行 for 循環
{“FirstName” : “Kim”}
{“LastName” : “hana”}
{“Phone” : “010-1234-5648”}
{“Email” : “abc@gmail.com”}
它是這樣出來的。 但我想要的結果是
{“FirstName” : “Kim”, “LastName” : “hana”, “Phone” : “010-1234-5648”, “Email” : “abc@gmail.com”}
我想讓它像這樣出來。 我應該怎么辦?
這是我剛剛寫的代碼。
function testRun(){
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var LastRow = ss.getLastRow();
var LastCol = ss.getLastColumn();
var arr = [];
for(var i = 1; i<=LastCol; i ++){
var fieldName = ss.getRange(1,i).getValue();
arr.push(fieldName);
}
//arr = [FirstName, LastName, Phone, Email]
for(var i =2;i<=LastRow;i++){
for(var j=1;j<=LastCol;j++){
var payload = Utilities.jsonStringify({
[arr[j-1]] : ss.getRange(i,j).getValue()}
);
}
}
}
payload
。getValue()
時,處理成本變高。 參考當這些點反映在實現目標的示例腳本中時,它變成如下。
當你的放映腳本被修改時,下面的修改怎么樣?
function testRun() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var LastRow = ss.getLastRow();
var LastCol = ss.getLastColumn();
var [header, ...values] = ss.getRange(1, 1, LastRow, LastCol).getValues();
var arr = [];
for (var i = 0; i < LastRow - 1; i++) {
var temp = {};
for (var j = 0; j < LastCol; j++) {
temp[header[j]] = values[i][j];
}
arr.push(temp);
}
console.log(JSON.stringify(arr))
}
運行此腳本時, arr
為[{"FirstName":"Kim","LastName":"hana","Phone":"010-1234-5648","Email":"abc@gmail.com"}]
.
作為另一種方法,我認為您也可以使用以下示例腳本。
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var [header, ...values] = ss.getRange(1, 1, ss.getLastRow(), ss.getLastColumn()).getValues(); var arr = values.map(r => header.reduce((o, h, j) => (o[h] = r[j], o), {})); console.log(JSON.stringify(arr))
您的代碼在每次迭代中創建單獨的對象。 為每個人創建一個空的 object,然后添加您需要的屬性。
這應該看起來像這樣:
for(var i=2; i<=LastRow; i++){
var payload = {}
for(var j=1; j<=LastCol; j++){
payload[arr[j-1]] = ss.getRange(i,j).getValue()};
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.