如何使数组数据类型(对象)在 JavaScript 中严格等于 (===)

how to make to array data types(object) as strictly equal (===) in JavaScript

在我的应用程序中,我必须使用严格相等的方式使两个数组数据类型(一个是任意[],另一个是数字[])相等。

我的代码是:

.component.ts

 if (categoryIds ===  PhysicalPackageConst.nrtPatchCategory){
               this.materialTypes = PhysicalPackageConst.nrtPatchMaterialType;
categoryIds = [];
            
                  }

在上面的 if 条件中,如果我将其设置为 ===(如果我使用 == 它显示数据(true)但不是===)

package.constant.ts

export const PhysicalPackageConst = {
nrtGumCategory : [29],
    nrtPatchCategory : [30]

所以我想在严格条件下使上述条件为真 谁能帮我解决这个问题

严格相等比较 (===) ("严格相等", "同一性", "三重相等") : 严格equality 比较两个值是否相等。在比较之前,这两个值都不会隐式转换为其他某个值。如果值具有不同的类型,则认为这些值不相等。如果值具有相同的类型,不是数字,并且具有相同的值,则它们被认为是相等的。否则比较值。

var num = 0;
var str = '0';

console.log(num === str); // false

Abstract Equality Comparison (==) ("loose equality", "double equals") : 执行松散相等的行为使用 == 如下。松散相等在将两个值转换为通用类型后比较两个值是否相等。转换后(一侧或两侧都可能进行转换),最终的相等比较完全按照 === 执行。

var num = 0;
var str = '0';

console.log(num === str); // true

Equality comparisons and sameness

对于你的问题,得到这些结果是合乎逻辑的,因为你需要将数组 :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() 的更多细节Array.prototype.forEach()

例子:

console.log(2 === Number('3')); // false
console.log(3 === Number('3')); // true