tabData
아래 스크립트로 생성 된 배열에서 중복 값을 제거하고 싶습니다 .
여기에서 "배열에서 중복 제거"를 언급하는 많은 게시물을 찾았지만 정확한 목표와 관련이없는 것 같습니다.
나는 시도했지만 이 답변을 사용 하고 내 스크립트에 맞게 변수를 조정 filter
하려고 시도했지만 중복을 제거하지 않았습니다.
확실히 내가 찾고있는 것을 정확히 수행하는 간단한 기능이 있습니다.
function getTabArray() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var version = ss.getRangeByName("version").getValue().toString();
var updateTabsName = "updateTabs";
var updateTabsSheet = ss.getSheetByName(updateTabsName);
var tabDataRows = updateTabsSheet.getLastRow();
var tabDataCols = updateTabsSheet.getMaxColumns() - 1;
var tabDataRange = updateTabsSheet.getRange(1, 2, tabDataRows, tabDataCols);
var tabData = tabDataRange.getValues(); // <-- REMOVE DUPLICATES
for (var i = 0; i < tabData.length; i++) {
if (tabData[0][i] != "" && tabData[0][i] > version) {
for (var j = 0; j < tabData.length; j++) {
if (tabData[j][i] != "" && j > 0) {
Logger.log("tabData[j][i] = " + tabData[j][i]); // tabData[j][i] = all values in column
}
}
}
}
}
이것은 현재 생성하는 배열입니다.
2.20200514.2,2.20200514.0,2.20200513.2,2.20200513.1,2.20200513.0,2.20200512.0,1.20200405.1,,tabDefinitions,Sheet6,Sheet6,changeLog,Sheet6,Index,,,,Sheet7,,Sheet7,settings,,,,Sheet8,,Sheet8,tabDefinitions,,,,,,,changeLog,,,,,,,updateTabs
배열에서 모든 중복 (Sheet6, Sheet7, Sheet8 등)을 제거하고 싶습니다.
편집하다:
한 번 더 검색 한 후 아래 답변 된 내용이 정확히 포함 된 이 답변 을 찾았 지만 해당 답변에서 어떤 방법을 사용하면 여전히 모든 중복을 얻습니다. 내가 뭘 잘못하고 있는지 잘 모르겠습니다.
var unique = tabData.filter((v, i, a) => a.indexOf(v) === i);
편집 2 :
내 배열이 실제로 "평평"하지 않다는 것을 깨달았 기 때문에 추가 var tabData = tabDataRange.getValues().flat();
했고 이제 모든 것이 작동합니다!
ES6 Set () 함수를 사용하여 중복을 제거 할 수 있습니다.
const newArray = [...new Set(arrayWithDuplicates)];
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다