首页 > 解决方案 > 在Javascript中映射二维数组

问题描述

使用二维数组的输入,我需要得到一个元素为大写的数组作为输出。

这是我的尝试,但它不起作用。

var cityColumn = [['avila'], ['burgos'], ['madrid'], ['sevilla']];
var cityRow = [['avila', 'avila', 'burgos', 'madrid', 'sevilla']];
var cityCell = [['sevilla']];


console.log(cityRow);
function upperCaseArray(myArray) {
  var upperized = myArray.map(function(city){
    console.log(typeof city);
    return city.toUpperCase();
  });
  return upperized;
}

console.log(upperCaseArray(cityColumn));
console.log(upperCaseArray(cityRow));
console.log(upperCaseArray(cityCell));
// output desired:
// [['AVILA], ['BURGOS'], ['MADRID'], ['SEVILLA']]
// [['AVILA, 'AVILA', 'BURGOS', 'MADRID', SEVILLA']]
// [['SEVILLA']]

注意:这些输入是我从 Google Sheet range 获得的SpreadsheetApp.getActiveSpreadsheet().getSelection().getActiveRange().getValues()。我开始编写 Google Apps 脚本。

标签: javascriptarraysstringgoogle-apps-scriptmap-function

解决方案


因为您的字符串嵌套在数组本身的数组中,所以您需要两个 .map

var cityColumn = [['avila'], ['burgos'], ['madrid'], ['sevilla']];
var cityRow = [['avila', 'avila', 'burgos', 'madrid', 'sevilla']];
var cityCell = [['sevilla']];
function upperCaseArray(arr) {
  return arr.map(function(subarr) {
    return subarr.map(function(str) {
      return str.toUpperCase();
    });
  });
}
console.log(upperCaseArray(cityColumn));
console.log(upperCaseArray(cityRow));
console.log(upperCaseArray(cityCell));


推荐阅读