簡體   English   中英

如何從數據數組中排除 null 個元素?

[英]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() ,它還將在您的數組中包含那些“”字符。

例子:

在這里,我向單元格E1F1添加了空格字符:

在此處輸入圖像描述

下面是使用map function后的data值:

在此處輸入圖像描述

如果我刪除單元格E1F1的值,則數據 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM