Мой код следующий:
let myMap = new Map(
[["MMP", ["H1", "-"]], ["TTP", ["H1", "*"]]
);
var array1 = ["MMP", 1, 2]; // array1[0] is the key I want to find in my map
console.log(myMap.get(array1[0]); // Works: gets the values for the given key => [value1,value2]
console.log(myMap.get('example key')[0]); // Works: gets the first element of the array value
console.log(myMap.get(array1[0])[0]); // TypeError: Cannot read property '0' of undefined
// array1[0] is the same as 'example key'
Я не вижу, что я делаю здесь не так. массив1 [0] имеет тип string, такой же, как ключ на моей карте.
Ваша помощь очень ценится!
РЕДАКТИРОВАТЬ: Добавление более полного кода:
var tagSheet = SpreadsheetApp.getActive().getSheetByName('values1');
var docSheet = SpreadsheetApp.getActive().getSheetByName('values2');
var myTagRange = tagSheet.getDataRange();
var myDocRange = docSheet.getDataRange();
var tagValues = myTagRange.getValues();
var docValues = myDocRange.getValues();
function compare(){
var array1 = [];
var columnToCheck = docSheet.getRange("A:A").getValues();
// Get the last row based on the data range of a single column.
var docLastColumn = getLastRowSpecial(columnToCheck);
var tagMap = new Map(getTagMap());
//Loop over values2 sheet
for(var n=3;n<docLastColumn;n++){
array1 = docValues[n][0].split("*");
if( tagMap.get(array1[0])[0] === 't1'){ //Error here
Logger.log('passed');
}
}
}
function getTagMap() {
//Select the column we will check for the first blank cell
var columnToCheck = tagSheet.getRange("A:A").getValues();
// Get the last row based on the data range of a single column.
var lastRow = getLastRowSpecial(columnToCheck);
let myMap = new Map();
for(var n=1;n<lastRow;n++){
myMap.set(tagValues[n][0].trim(), [tagValues[n][1].trim(),tagValues[n][2].trim()]);
}
return myMap;
};
function getLastRowSpecial(range){
var rowNum = 0;
var blank = false;
for(var row = 0; row < range.length; row++){
if(range[row][0] === "" && !blank){
rowNum = row;
blank = true;
}else if(range[row][0] !== ""){
blank = false;
}
}
return rowNum;
}
Чтобы сделать это воспроизводимым, создайте лист Google с первым листом с именем values1 и вторым листом с именем values2. Вы должны запустить это в Google Apps Script.
Пожалуйста, смотрите изображения для примеров значений:
значения1 лист
значения2 листа