Javascript caso sensible
-
09-10-2019 - |
Pregunta
¿Cómo hago la variable "numProducto" no sea sensible a mayúsculas. Cuando ejecuto el guión, no lo puedo detectar "ABCD" si estoy en busca de "ABCD". No estoy seguro de qué hacer.
function doStuff() {
var ss = SpreadsheetApp.getActiveSheet();
var starting_row = 2; // starting row to scan for part# on column C
// outer loop, loop over products sold
for (var j=6;j<=16;j++) {
var r = ss.getRange(j,2);
// read inventory part number entered
var partnum = r.getValue();
if (!partnum) {
continue; // attempt to skip over empty rows in the B6:B16 range
}
var partcount = parseInt(ss.getRange(j,1).getValue());
if (isNaN(partcount) || partcount<=0) {
// invalid quantity. skip.
continue;
}
// Browser.msgBox("partnum = "+partnum);
// get list of known part # from the spreadsheet
var parts = ss.getRange(starting_row,3,9999,1).getValues();
var found = false;
for (var i=0,l=parts.length;i<l;++i) {
if (parts[i]==partnum) {
// we have found our part. grab inventory count cell.
found = true;
var count = ss.getRange(starting_row+i,1).getValue();
if (count-partcount<0) {
Browser.msgBox("Error: Inventory for part "+partnum+", is "+count);
} else {
// write back the count number for that part, decremented by 1.
ss.getRange(starting_row+i,1).setValue(count-partcount);
// Browser.msgBox("Inventory updated.");
}
break; // either way, we're done with that part.
}
}
if (!found) {
Browser.msgBox("Part# "+partnum+" not found.");
}
}
}
Solución
Por el amor de calrity, aquí está la respuesta. Aunque @Freddie fue el primero en hablar de ello.
// get list of known part # from the spreadsheet
var parts = ss.getRange(starting_row,3,9999,1).getValues();
var found = false;
for (var i=0,l=parts.length;i<l;++i) {
if (parts[i]==partnum) {
se convierte en:
// get list of known part # from the spreadsheet
var parts = ss.getRange(starting_row,3,9999,1).getValues();
var found = false;
for (var i=0,l=parts.length;i<l;++i) {
if (parts[i].toLowerCase()==partnum.toLowerCase()) { // <-- NOTE CHANGE HERE
Editar Para no sea una cadena objetos
// get list of known part # from the spreadsheet
var parts = ss.getRange(starting_row,3,9999,1).getValues();
var found = false;
for (var i=0,l=parts.length;i<l;++i) {
if ((parts[i]+"").toLowerCase()==(partnum+"").toLowerCase()) { // <-- NOTE CHANGE HERE
gracias a la sombra Asistente
Otros consejos
tal vez se puede utilizar toUpperCase ()?
Asistente Shadow se le ocurrió la respuesta que resuelve mi problema
Si ((partes [i] + "") .tolowercase () == (numProducto + "") .tolowercase ()) -
Gracias
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow