如何访问数组中的值?我已经检查了jQuery文档但我的方案没有列出。
数组结构:
var myData = [{
label: "erster",
id: 0,
Name: "Ein Name"
}, {
label: "zweiter",
id: 1,
Name: "Der zweite Name"
}, {
label: "dritter",
id: 2,
Name: "Dritter Name"
}];
这是我尝试在浏览器中显示一些结果:
$(document).ready(function() {
$.each(myData, function (i, val) {
alert(i + " " + val);
});
});
响应不仅仅是Object,Object
。我想我对$.each
的结构有点了解(感谢文档),但我认为没有办法去里面这个数组元素中的一个。
感谢您的帮助。
编辑:
#非常感谢那些非常好的和明确的投入。 现在我明白了如何访问这些值。有人能给我一个如何为这些元素创建HTML输出的技巧吗?
结果应该是:
<div id="accordion">
<h3>'val.labelfromelement1'</h3>
<div class="notimportant">'val.Namefromelement1'</div>
<h3>'val.labelfromelement2'</h3>
<div class="notimportant">'val.Namefromelement2'</div>
<h3>'val.labelfromelement3'</h3>
<div class="notimportant">'val.Namefromelement3'</div>
<h3>'val.labelfromelement4'</h3>
<div class="notimportant">'val.Namefromelement4'</div>
</div>
&#13;
如你所见,如果我们在数组中创建一个新元素(数组来自图表),它会导致手风琴自动增加
使用以下代码,它只显示最后一个实例/ Part / Segment / what: - )
var myData = [
{
label: "erster",
id: 0,
Name:"Ein Name"
},
{
label: "zweiter",
id: 1,
Name:"Der zweite Name"
},
{
label: "dritter",
id: 2,
Name:"Dritter Name"
}
]
$(document).ready(function(e) {
$.each(myData, function (i, val) {
myAccordion = "<h3>" + val.label + "</h3><div>" + val.Name + "</div>";
});
$("#myAccordionDiv").html(myAccordion);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<body>
<div id="myAccordionDiv">
</div>
</body>
&#13;
深呼吸 :-)我现在能做什么?
答案 0 :(得分:2)
您的$.each
代码很好,问题是因为您尝试将字符串附加到对象会导致对字符串强制类型,因此数组中的对象将转换为[Object object]
。
首先,不要将对象附加为字符串,其次使用控制台进行调试(要查看控制台,通常在浏览器中 F12 )。
$(document).ready(function() {
$.each(myData, function (i, val) {
console.log(i, val);
});
});
请注意,要获取数组中每个对象的属性,可以从val
循环中的each()
参数访问它们:
$.each(myData, function (i, val) {
console.log(val.label);
console.log(val.id);
console.log(val.Name);
});
答案 1 :(得分:0)
基本上你遍历数据,每个数据都变成val,所以你必须访问val的属性。
$.each(myData, function (i, val) {
console.log(val.label);
console.log(val.id);
console.log(val.Name);
}
答案 2 :(得分:0)
Object对象是js中对象的字符串转换。您可以调用console.dir来查看控制台中的整个对象。尝试使用val.id访问对象的单个属性。
答案 3 :(得分:0)
您需要访问每个值的属性:
$(document).ready(function() {
var myData = [
{
label: "erster",
id: 0,
Name:"Ein Name"
},
{
label: "zweiter",
id: 1,
Name:"Der zweite Name"
},
{
label: "dritter",
id: 2,
Name:"Dritter Name"
}
];
$.each(myData, function (i ,val) {
console.log(i + ',' + val.label + ', ' + val.id + ',' + val.Name);
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 4 :(得分:0)
您的代码是正确的,唯一的问题是 val 是一个对象。您必须访问 val 的属性,例如 val.label 。
$(document).ready(function() {
$.each(myData, function (i ,val) {
alert( i + " " + val.label );
});
});
答案 5 :(得分:0)
$(document).ready(function() {
$.each(myData, function (i ,val) {
//You are now inside the first object.
//Your first object have 3 element so loop inside it.
$.each(val, function(j, element){
alert(j + ' ' + element);
}
alert( i + " " + val );
//etc..
});
});
答案 6 :(得分:0)
您不需要调用或了解数组中对象的每个属性, 只有内部数组循环,也做当前单元格的循环对象
$(document).ready(function() {
var myData = [ {
label: "erster",
id: 0,
Name:"Ein Name" },
{
label: "zweiter",
id: 1,
Name:"Der zweite Name"
},
{
label: "dritter",
id: 2,
Name:"Dritter Name"
} ];
$.each(myData, function (i ,val) {
var tmpString = '';
$.each(val, function(key, value) {
tmpString += key + ' : ' + value + '\n';
});
alert(tmpString);
});
});