JavaScript数组参考
时间:2020-03-05 18:59:48 来源:igfitidea点击:
如果我有以下情况:
{"hdrs": ["Make","Model","Year"], "data" : [ {"Make":"Honda","Model":"Accord","Year":"2008"} {"Make":"Toyota","Model":"Corolla","Year":"2008"} {"Make":"Honda","Model":"Pilot","Year":"2008"}] }
我有一个" hdrs"名称(即" Make"),如何引用" data"数组实例?
似乎data [" Make"] [0]
应该可以正常工作...但是无法获得正确的参考
编辑
很抱歉。我可以遍历hdrs
来获取每个hdr名称,但是我需要使用hdrs
的每个实例值来查找data
中的所有数据元素(不确定哪个更好)。解释)。而且我会将其包含在变量" t"中,因为它是JSON(赞赏重新标记),我希望能够使用类似以下内容的引用:t.data [hdrs [i]] [j]
解决方案
回答
也许尝试数据[0]。
回答
关闭,我们将使用
var x = data[0].Make; var z = data[0].Model; var y = data[0].Year;
回答
那么,像这样吗?
var theMap = /* the stuff you posted */; var someHdr = "Make"; var whichIndex = 0; var correspondingData = theMap["data"][whichIndex][someHdr];
如果我对理解正确,那应该可以。
回答
我不得不稍微修改一下代码:
var x = {"hdrs": ["Make","Model","Year"], "data" : [ {"Make":"Honda","Model":"Accord","Year":"2008"}, {"Make":"Toyota","Model":"Corolla","Year":"2008"}, {"Make":"Honda","Model":"Pilot","Year":"2008"}] }; alert( x.data[0].Make );
编辑:响应编辑
var x = {"hdrs": ["Make","Model","Year"], "data" : [ {"Make":"Honda","Model":"Accord","Year":"2008"}, {"Make":"Toyota","Model":"Corolla","Year":"2008"}, {"Make":"Honda","Model":"Pilot","Year":"2008"}] }; var Header = 0; // Make for( var i = 0; i <= x.data.length - 1; i++ ) { alert( x.data[i][x.hdrs[Header]] ); }
回答
var x = {"hdrs": ["Make","Model","Year"], "data" : [ {"Make":"Honda","Model":"Accord","Year":"2008"} {"Make":"Toyota","Model":"Corolla","Year":"2008"} {"Make":"Honda","Model":"Pilot","Year":"2008"}] }; x.data[0].Make == "Honda" x['data'][0]['Make'] == "Honda"
你有你的数组/哈希查找向后:)
回答
我们显示的代码在语法上不正确;它需要一些逗号。我得到这个工作:
$foo = {"hdrs": ["Make","Model","Year"], "data" : [ {"Make":"Honda","Model":"Accord","Year":"2008"}, {"Make":"Toyota","Model":"Corolla","Year":"2008"}, {"Make":"Honda","Model":"Pilot","Year":"2008"}] };
然后我可以按以下方式访问数据:
$foo["data"][0]["make"]
回答
首先,我们忘记了数据数组项中的结尾逗号。
尝试以下方法:
var obj_hash = { "hdrs": ["Make","Model","Year"], "data" : [ {"Make":"Honda","Model":"Accord","Year":"2008"}, {"Make":"Toyota","Model":"Corolla","Year":"2008"}, {"Make":"Honda","Model":"Pilot","Year":"2008"}, ] }; var ref_data = obj_hash.data; alert(ref_data[0].Make);
@Kent Fredric:请注意,并不是必须要使用最后一个逗号,但是可以使我们更轻松地移动行(即,如果在最后一行之后移动或者添加,而没有逗号,则必须特别记得要加一个。我认为最好始终使用逗号结尾。)
回答
我不确定我是否理解问题,但是...
假设上述JSON是var obj,则需要:
obj.data[0]["Make"] // == "Honda"
如果我们只想引用第一个标头引用的字段,则将类似于:
obj.data[0][obj.hdrs[0]] // == "Honda"
回答
在答案的帮助下(并且正确地使内部和外部循环正确执行之后),我开始工作了:
var t = eval( "(" + request + ")" ) ; for (var i = 0; i < t.data.length; i++) { myTable += "<tr>"; for (var j = 0; j < t.hdrs.length; j++) { myTable += "<td>" ; if (t.data[i][t.hdrs[j]] == "") {myTable += " " ; } else { myTable += t.data[i][t.hdrs[j]] ; } myTable += "</td>"; } myTable += "</tr>"; }