Сравнение строгого равенства (===) ("строгое равенство", "идентичность", "тройное равенство") : Строгое равенство сравнивает два значения равенства. Ни одно из значений неявно не преобразуется в какое-либо другое значение перед сравнением. Если значения имеют разные типы, значения считаются неравными. Если значения имеют один и тот же тип, не являются числами и имеют одинаковое значение, они считаются равными. В противном случае для сравнения стоимости.
var num = 0;
var str = '0';
console.log(num === str); // false
Абстрактное сравнение равенства (==) ("свободное равенство", "двойное равенство") : Поведение для выполнения свободного равенства с использованием ==
заключается в следующем. Свободное равенство сравнивает два значения для равенства после преобразования обоих значений в общий тип. После преобразований (одна или обе стороны могут подвергнуться преобразованиям) окончательное сравнение на равенство выполняется точно так, как ===
выполняет его.
var num = 0;
var str = '0';
console.log(num === str); // true
Сравнение равенства и одинаковость
Для вашей проблемы логично получить этот результат, потому что вам нужно привести значение массива :any[] к числу и провести строгое сравнение.
let categoryIds: any[] = [];
let nrtPatchCategory: number = 30;
// browse categoryIds arrays (you can use any other method like for ...)
categoryIds.forEach(categoryId => {
if (Number(categoryId) === nrtPatchCategory) {
...
}
});
Примечание: Для получения более подробной информации о массиве forEach (). prototype.forEach()
Exemple:
console.log(2 === Number('3')); // false
console.log(3 === Number('3')); // true