抱歉,我對此很陌生,但我進行了額外的投射,需要獲取有關我正在作業的人員和型別的統計資訊,并希望構建模板,以便我以后可以參考它以開始計算和顯示統計資訊。
我的代碼:
function myFunction () {
var UNIQUE_ETHNIC = ["w","b","h","a","m","e","o"];
var UNIQUE_GENDER = ["m","f"];
var UNIQUE_AGE = ["20","30","40","50","60","70"];
var egaArray = calculateEga(UNIQUE_ETHNIC, UNIQUE_GENDER, UNIQUE_AGE);
}
function calculateEga(ethnicUnique, genderUnique, ageUnique) {
var returnedArray = [[],[]];
var tempArray = [];
for (eU = 0; eU < ethnicUnique.length; eU ) {
var columnCounter = 0;
for (gU = 0; gU < genderUnique.length; gU ) {
for (aU = 0; aU < ageUnique.length; aU ) {
tempArray[columnCounter] = ethnicUnique[eU] genderUnique[gU] ageUnique[aU];
columnCounter ; //used so male & female on one line
}
}
Logger.log(tempArray); //this gives the right array here each time
returnedArray[eU] = tempArray;
//returnedArray[eU] = ['ega: ' tempArray]; //outputs what I kind of need
}
Logger.log(returnedArray); // 7 dupes of the last compiled array
return returnedArray;
}
--- 第一個 Logger.log 吐出正確的 tempArray 值,但是一旦我將它們粘貼在回傳的陣列中,它只會給我最后編譯的陣列的 7 個重復,因此最后一個 Logger.log 給出了這個:
[[om20, om30, om40, om50, om60, om70, of20, of30, of40, of50, of60, of70],
[om20, om30, om40, om50, om60, om70, of20, of30, of40, of50, of60, of70],
[om20, om30, om40, om50, om60, om70, of20, of30, of40, of50, of60, of70],
[om20, om30, om40, om50, om60, om70, of20, of30, of40, of50, of60, of70],
[om20, om30, om40, om50, om60, om70, of20, of30, of40, of50, of60, of70],
[om20, om30, om40, om50, om60, om70, of20, of30, of40, of50, of60, of70],
[om20, om30, om40, om50, om60, om70, of20, of30, of40, of50, of60, of70]]
但是,如果我使用注釋掉的 'ega:' 呼叫,我會更接近我的目標版本:
[ega: wm20,wm30,wm40,wm50,wm60,wm70,wf20,wf30,wf40,wf50,wf60,wf70],
[ega: bm20,bm30,bm40,bm50,bm60,bm70,bf20,bf30,bf40,bf50,bf60,bf70],
[例如:hm20,hm30,hm40,hm50,hm60,hm70,hf20,hf30,hf40,hf50,hf60,hf70],
[例如:am20,am30,am40,am50,am60,am70,af20,af30,af40,af50,af60,af70],
[例如:mm20,mm30,mm40,mm50,mm60,mm70,mf20,mf30,mf40,mf50,mf60,mf70],
[例如:em20,em30,em40,em50,em60,em70,ef20,ef30,ef40,ef50,ef60,ef70],
[例如:om20,om30,om40,om50,om60,om70,of20,of30,of40,of50,of60,of70]]
想要獲得更高版本但沒有“ega:”
感謝您在這里提供的任何幫助!
uj5u.com熱心網友回復:
我認為在您的情況下, 的值tempArray可能會returnedArray作為按參考傳遞給陣列。從您的示例值來看,似乎所有值都是tempArray. 通過這個,當'ega: ' tempArray使用時,通過值運行并獲得預期的陣列。我認為這可能是您的問題的原因。在這種情況下,如何進行以下修改?
從:
returnedArray[eU] = tempArray;
到:
returnedArray[eU] = tempArray.slice();
或者
returnedArray[eU] = tempArray.concat();
或者
returnedArray[eU] = [...tempArray];
- 在這種情況下,我認為其他方法也存在。
測驗:
顯示代碼片段
function myFunction() {
var UNIQUE_ETHNIC = ["w", "b", "h", "a", "m", "e", "o"];
var UNIQUE_GENDER = ["m", "f"];
var UNIQUE_AGE = ["20", "30", "40", "50", "60", "70"];
var egaArray = calculateEga(UNIQUE_ETHNIC, UNIQUE_GENDER, UNIQUE_AGE);
console.log(egaArray)
}
function calculateEga(ethnicUnique, genderUnique, ageUnique) {
var returnedArray = [[], []];
var tempArray = [];
for (eU = 0; eU < ethnicUnique.length; eU ) {
var columnCounter = 0;
for (gU = 0; gU < genderUnique.length; gU ) {
for (aU = 0; aU < ageUnique.length; aU ) {
tempArray[columnCounter] = ethnicUnique[eU] genderUnique[gU] ageUnique[aU];
columnCounter ;
}
}
returnedArray[eU] = tempArray.slice();
}
return returnedArray;
}
myFunction();
參考:
- 片()
- 連接()
- 展開語法 (...)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/327418.html
