如何使用jQuery访问数组中的值

时间:2015-11-11 14:04:57

标签: javascript jquery arrays

如何访问数组中的值?我已经检查了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;
&#13;
&#13;

如你所见,如果我们在数组中创建一个新元素(数组来自图表),它会导致手风琴自动增加

Project should looks like

使用以下代码,它只显示最后一个实例/ Part / Segment / what: - )

&#13;
&#13;
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;
&#13;
&#13;

深呼吸 :-)我现在能做什么?

7 个答案:

答案 0 :(得分:2)

您的$.each代码很好,问题是因为您尝试将字符串附加到对象会导致对字符串强制类型,因此数组中的对象将转换为[Object object]

首先,不要将对象附加为字符串,其次使用控制台进行调试(要查看控制台,通常在浏览器中 F12 )。

$(document).ready(function() {
    $.each(myData, function (i, val) {
        console.log(i, val);
    });
});

Working example

请注意,要获取数组中每个对象的属性,可以从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)

您需要访问每个值的属性:

&#13;
&#13;
$(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;
&#13;
&#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);
  });
});

工作示例https://jsfiddle.net/xxL5nhee/