Javascript 访问对象数组时遇到问题

Javascript 访问对象数组时遇到问题,javascript,Javascript,我有下面的数组,我想以testype[product.ticketType]的身份访问数组。icon其中product。tiketType是testype数组的键 基于此,我想返回该键的值 temptype = [ 5ffd7c785bb1132298a3d140: { _id: "5ffd7c785bb1132298a3d140", label: "test1", icon: "pi pi

我有下面的数组,我想以
testype[product.ticketType]的身份访问数组。icon
其中
product。tiketType
testype
数组的键

基于此,我想返回该键的值

temptype = [
    5ffd7c785bb1132298a3d140: {
        _id: "5ffd7c785bb1132298a3d140",
        label: "test1",
        icon: "pi pi-arrow-down",
        color: "#ff0080",
        index: 0
    },
    5ffd7c785bb1132298a3d141: {
        _id: "5ffd7c785bb1132298a3d141",
        label: "test1",
        icon: "pi pi-arrow-down",
        color: "#ff0080",
        index: 0
    }
]
let-testype={
“5FFD7C785BB113298A3D140”:{
_id:“5FFD7C785BB113298A3D140”,
标签:“test1”,
图标:“圆周率向下箭头”,
颜色:“ff0080”,
索引:0
},
“5FFD7C785BB113298A3D141”:{
_id:“5FFD7C785BB113298A3D141”,
标签:“test1”,
图标:“圆周率向下箭头”,
颜色:“ff0080”,
索引:0
}
};

console.log(试探类型[“5FFD7C785BB113298A3D140”]图标)您可能不想为此使用数组,但首先让我们解释一下发生了什么。可能发生了两件事:

  • 您的数组具有名称为“5FFD7C785BB113298A3D140”和“5FFD7C785BB113298A3D141”的非索引属性。这些不是数组项,而是额外的属性。(数组可以具有非条目属性,因为它们是对象。)请注意,它们是字符串。这意味着如果
    product.ticketType
    是一个数字,那么使用
    testype[product.ticketType]
    将找不到这些属性,因为
    product.ticketType
    将使用默认的标准格式转换为字符串,即十进制,而不是十六进制

  • 另一个问题是,这些数字太大,超出了JavaScript的
    number
    类型(IEEE-754双精度二进制浮点)能够准确表示的范围,即使它们是整数。最大安全整数值是
    0x1ffffffffffffff
    ,比
    0x5ffd7c785bb113298a3d140
    低很多

  • 改为使用对象,并确保
    product.ticketType
    作为字符串维护,从不转换为数字,因为(例如)如果将字符串
    “5ffd7c785bb113298a3d140”
    解析为十六进制数字,则得到的结果不是相同的数字(而是
    0x5ffd7c785bb14000000000

    常量类型={
    “5FFD7C785BB113298A3D140”:{
    _id:“5FFD7C785BB113298A3D140”,
    标签:“test1”,
    图标:“圆周率向下箭头”,
    颜色:“ff0080”,
    索引:0
    },
    “5FFD7C785BB113298A3D141”:{
    _id:“5FFD7C785BB113298A3D141”,
    标签:“test1”,
    图标:“圆周率向下箭头”,
    颜色:“ff0080”,
    索引:0
    },
    };
    常数乘积={
    票证类型:“5FFD7C785BB113298A3D141”,
    };
    
    日志(试探类型[product.ticketType].icon)检查这是否有帮助。数组的语法无效。如果要通过键访问,请使用对象。首先,必须将
    [
    替换为
    {
    ,将
    ]
    替换为
    }
    。然后,您可以使用如下方式访问元素:
    var-product={};var product.TICKTTYPE='5FFD7C785BB113298A3D140';日志(试探类型[product.ticketType].icon)一个好的IDE可以突出显示、解决或避免的问题数量非常多。我真的建议你买一个,或者如果你还没有的话,可以添加/启用线头。专业人士的回答真是太棒了