Javascript 如何访问JS对象中的数组元素?

Javascript 如何访问JS对象中的数组元素?,javascript,Javascript,我在访问数组中的元素时遇到问题。下面是一个示例代码: var Core = { customNames: { '1': [ 'Power Off' ], '21': [ 'TV', 'Bedroom' ] }, render: function() { $.each( Core.devices.result, function( i, obj ) { var name = Core.cu

我在访问数组中的元素时遇到问题。下面是一个示例代码:

var Core = {

    customNames: {
        '1':    [ 'Power Off' ],
        '21':   [ 'TV', 'Bedroom' ]
    },

    render: function() {
        $.each( Core.devices.result, function( i, obj ) {
            var name = Core.customNames[obj.idx][1] ? Core.customNames[obj.idx][1] : obj.Name;
        });
    }

};

idx是一个变量,比如说值为21。在这种情况下,如何访问“卧室”?

在渲染功能中尝试

render: function() {
        var that = this;
        $.each( this.devices.result, function( i, obj ) {
            var name = that.customNames[obj.idx][1] ? that.customNames[obj.idx][1] : obj.Name;
        });
    }
您必须将
设置为该
,因为
$内的作用域会发生变化

下面是我测试过的一个例子,它是有效的:

var-thing={
客户名称:{
“1”:[“关机”],
“21”:[“电视”,“卧室”]
},
日志:函数(){
log(“这被记录在这里:+This.customNames['21'][0]);
}
}

thing.log()
已解决!访问数组元素没有问题,但customNames对象不完整。正确代码:

var name = Core.customNames[obj.idx] != undefined ? Core.customNames[obj.idx][0] : obj.Name;

这回答了你的问题吗?设备似乎没有在任何地方定义。嘿,特拉维斯,这只是代码的一部分,设备在其他地方定义。不幸的是。。。“Uncaught TypeError:无法读取undefined的属性“1”:(可能是
that.customNames[obj.idx]
未定义,因为在字典中找不到键
obj.idx
)。是的,确切地说:)好吧,也许你可以将我的答案标记为答案,看起来很有效!