我们正在尝试将工作表中的所有变音符号替换为对数据库更友好的对应符号。我希望能够将此处找到的解决方案 ( Remove accents/diacritics in a string in JavaScript ) 应用于数组。
我们已经访问过“在 Javascript 中删除字符串中的重音符号/变音符号”主题,并且该解决方案对于一个单元格非常有效。但是,当我尝试使用当前代码执行此操作时,它仅更改一个值并将其粘贴到整个数组。我做错了什么?
(其余代码在链接中可见)
function removeDiacritics () {
var range = "A2:B3";
var array = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Cleaner").getRange(range).getValues();
var base = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Cleaner").getRange(range);
var newArray = [];
for(var row=0;row<array.length;row++){
for(var i=0;row<array[row].length;i++){
var newText = array[row][i].replace(/[^\u0000-\u007E]/g, function(a){
return diacriticsMap[a] || a;
});
newArray.push(newText);
}
}
base.setValue(newArray);
}
最佳答案
答案:
您在嵌套循环中迭代了不正确的计数器变量。
修复:
在嵌套循环中,为了更改正在比较的数组的元素,您需要更改:
for(var row=0;row<array.length;row++){
for(var i=0;row<array[row].length;i++){
// code
}
}
至:
for(var row = 0; row < array.length; row++){
for(var i = 0; i < array[row].length; i++){
//code
}
}
关于javascript - 使用 Google Apps 脚本替换数组中的变音符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58454427/