在我的应用程序中,我必须使用严格相等使两种数组数据类型(一种是任意[],另一种是数字[](相等。
我的代码是:
.组件.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