Я не могу понять, почему мое сравнение между элементами массива всегда возвращает true. Как я могу проверить, не равны ли разные элементы в одном массиве?
Я пробовал !=
, !==
и !colCheck[i].equals(colCheck[x])
, но это не сработало.
function mergeCells() {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
var rowsToMerge = [];
var colCheck = sheet.getRange(8,10,79,1).getValues();
for (var i = 0; i < 79; i++) {
var x = i + 1;
if (colCheck[i] != colCheck[x]) rowsToMerge.push(i);// Always returns true
if (colCheck[i] == '') {
break;
}
}
}
Я проверил элементы массивов, и даже когда они точно такие же, сравнение возвращает true.
1 ответ
Элементы colCheck являются объектами, поэтому сравнение с ==
, !=
, ===
или !===
просто сравнивает ссылки, что, вероятно, не соответствует вашим намерениям, попробуйте вместо этого сравнить свойства объекта.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.
!==
и===
вместо!=
и==
, а также избегайте магических чисел, таких как 79, вы можете использоватьforEach
вместоfor
. информация на developer.mozilla.org/en-US/ документы/Интернет/JavaScript/Справочник/…colCheck
? объекты какого типа?