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可以突出显示、解决或避免的问题数量非常多。我真的建议你买一个,或者如果你还没有的话,可以添加/启用线头。专业人士的回答真是太棒了