我试图使用变量来访问数组值,但是我得到了一个未定义的错误。
var ordernum = 54;
keys[ordernum][ "keys" ];
Uncaught TypeError: Cannot read property 'keys' of undefined
如果我做keys["54"][ "keys" ];
它就可以了。但是,我需要使用变量,因为此代码位于for
循环中。
如何使用变量获得相同的结果?
完整代码:
var customers = <?php if ( isset($customers) ) { echo json_encode($customers); } ?>;
var keys = <?php if ( isset($keystable) ) { echo json_encode($keystable); } ?>;
for ( var i = 0; i < customers.length; i++ ) {
var ordernum = customers[ i ][ "order" ];
table += '<tr bgcolor="#ffffff">';
table += '<td>' + customers[ i ][ "email" ] + '</td>';
table += '<td>' + customers[ i ][ "org" ] + '</td>';
table += '<td style="width:450px;">' + customers[ i ][ "notes" ] + '</td>';
table += '<td>' + keys[ordernum.toString()][ "keys" ] + '</td>';
table += '</tr>';
}
答案 0 :(得分:0)
这可能适合你:
var ordernum = 54;
keys[ordernum+""][ "keys" ];
答案 1 :(得分:-1)
如果键[&#34; 54&#34;] [&#34;键&#34;]正在工作,则表示第一个键是一个字符串。然后你需要使变量成为一个字符串。
var ordernum = "54";
keys[ordernum][ "keys" ];
或
var ordernum = 54;
keys[ordernum.toString()][ "keys" ];
答案 2 :(得分:-1)
你所说的是不可能的(好吧,不是技术上不可能,但它需要基于代理的一些js魔法,我很确定你的情况不存在。)
您的密钥可能不是"54"
,而是" 54"
,"054"
或类似内容。
使用
之类的内容查看密钥的内容console.log(JSON.stringify(Object.keys(keys)));
另一个经常出现的错误是您正在使用异步数据收集(AJAX)并且您的循环运行得太早(您需要将处理放在回调中,而是在进行AJAX调用后立即运行它)