Este código verifica el fondo de un cierto número de celdas.
var array = sheet.getRange(1, 1, 20, 1).getBackgrounds();Si registro esta matriz en la consola de Google Apps Script, devuelve la siguiente matriz:
[[#cccccc], [#ffffff], [#ffffff], [#ffffff], [#ffffff], [#cccccc], [#ffffff], [#ffffff], [#ffffff], [#ffffff], [#f3f3f3], [#ffffff], [#ffffff], [#ffffff], [#ffffff], [#ffffff], [#cccccc], [#cccccc], [#ffffff], [#ffffff]] Quiero comprobar si esta matriz no contiene un determinado código de color: #377a47 .
Traté de usar includes para esto, sin embargo, esto no funciona ya que el valor es una matriz y no una cadena.
console.log(!array.includes("#377a47")); // returns trueEsto debería devolver verdadero, ya que la matriz no contiene este código de color #377a47. Y devuelve verdadero, sin embargo, también devuelve verdadero si pruebo el siguiente código de color que está presente en la matriz:
console.log(!array.includes("#cccccc")); // returns true Aparentemente, esta no es la forma correcta de verificar si la matriz no contiene #377a47 . Sospeché que tenía algo que ver con el hecho de que es una matriz anidada, pero no estoy seguro de cómo escribir correctamente el código para verificar esto.
Mi pregunta: ¿Cómo verificar correctamente si la matriz no contiene el código de color #377a47 ?
Las matrices en JavaScript se comparan por referencia, por lo que incluso el enfoque:
array.includes(["#377a47"]) //returns falseno funcionará
Puede intentar aplanar una matriz y comparar valores primitivos como este:
console.log(![[1], [2], [3]].flat().includes(1)); //returns false