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



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

我的代码是:

.组件.ts

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

}

在上面的如果条件中,如果我将其设为===,则它显示为false(如果我使用===,它显示的是数据(true(,而不是===(

包.常量.ts

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

因此,我想在严格条件下使上述条件成立有人能在这个上帮我吗

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

var num = 0;
var str = '0';
console.log(num === str); // false

抽象相等比较(==(("松散相等","双重相等"(:使用==执行松散相等的行为如下。将两个值转换为通用类型后,松散相等会比较两个值的相等性。在转换之后(一侧或两侧可能进行转换(,最终的相等性比较与===执行的完全相同

var num = 0;
var str = '0';
console.log(num === str); // true

相等比较和相同

对于您的问题,获得这些结果是合乎逻辑的,因为您需要将array: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

最新更新