[英]How can I exclude null elements from data array?
我一直在使用 Yuri 對一個問題的回答,但發現自己處於一種新的情況下,我在這里還沒有完全理解這種方法的每一步:
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var header = sheet.getDataRange().getValues()[0];
var data = [
["ID","Variação","Nome Site","Obs"],
[11602,185,"Camisa Teste","Teste da Observação"]
]
var indexes = header.map(x => data[0].indexOf(x));
data = data.map(x => indexes.map(i => x.slice()[0] = x[i]));
sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
}
結果如下所示:
let result = [
["ID","Variação","Nome Site","Obs", "", ""],
[11602,185,"Camisa Teste","Teste da Observação", "", ""]
]
現在,這將返回帶有空值的data
。 我怎樣才能讓它只返回映射的數組元素? 因此,不是將數組長度設為 6,而是僅為 4。預期結果:
let expectedResult = [
["ID","Variação","Nome Site","Obs"],
[11602,185,"Camisa Teste","Teste da Observação"]
]
謝謝!
數組中有 null 個元素的一個可能原因是 header 旁邊的單元格中有" "
或空格字符。 由於您使用的是getDataRange()
,它還將在您的數組中包含那些“”字符。
例子:
在這里,我向單元格E1和F1添加了空格字符:
下面是使用map function后的data
值:
如果我刪除單元格E1和F1的值,則數據 output 為:
如果 header 以下的值與 header 中的列數重疊,也可能出現 Null 值。
例子:
Output:
解決方案:
不要使用getDataRange()
,而是明確定義您用於 header 的范圍。您可以使用getRange(row, column, numRows, numColumns)
或getRange(a1Notation)
。
一種方法是過濾內部值:
let result = [ ["ID", "Variação", "Nome Site", "Obs", "", ""], [11602, 185, "Camisa Teste", "Teste da Observação", "", ""] ] result = result.map(x => x.filter(y => y)) console.log(result)
function test() {
Logger.log(JSON.stringify([1,2,3,null,4,null,5,''].filter(e => e)))
}
Execution log
7:48:37 PM Notice Execution started
7:48:37 PM Info [1,2,3,4,5]
7:48:38 PM Notice Execution completed
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.