2013-04-03 183 views
1

首先抱歉,如果我有术语错误,如果是的话,请你纠正我?通过多值阵列循环

我想通过以下JavaScript数组循环。

 var pieData2 = [ 
      { 
       label: 'wow', 
       value: 30, 
       color:"#F38630" 
      }, 
      { 
       label: 'wow2', 
       value : 10, 
       color : "#E0E4CC" 
      }, 
      { 
       label: 'wow3', 
       value : 100, 
       color : "#69D2E7" 
      } 

     ]; 

我想写标签和颜色分为单独的div。我尝试了以下概念,但没有得到任何地方。

 $.each(pieData2[0], function(key, value) { 
     alert(key + ": " + value); 
     }); 
+2

尝试删除'[0]'。 – alex

+0

应该输出什么? – VisioN

+0

你不需要指定它是一个“多值”数组,因为数组被设计为包含多个值;把它称为一个数组。 –

回答

3

http://jsfiddle.net/X5r8r/1119/

var pieData2 = [ 
      { 
       label: 'wow', 
       value: 30, 
       color:"#F38630" 
      }, 
      { 
       label: 'wow2', 
       value : 10, 
       color : "#E0E4CC" 
      }, 
      { 
       label: 'wow3', 
       value : 100, 
       color : "#69D2E7" 
      } 

     ]; 

$.each(pieData2, function(key, value) { 
    alert(key + ": " + value['label'] +" value: " + value['value']); 
     }); 
+0

完美,也记录回复。 – AshHimself

1

各是好的,但你需要循环pieData2没有结束pieData2的第一个元素...

$.each(pieData2, function() { 
      alert(this.label + ": " + this.value); 
    }); 

http://jsfiddle.net/3anAJ/

1

试试这个

$.each(pieData2, function(index) { 
    alert("label = " +pieData2[index].label+ " color = " +pieData2[index].color); 
}); 
1

你这不需要jQuery。在jQuery确实不需要的情况下,我并不真正暗示它。在那一点上,这只是毫无意义的。尽可能使用常规JS,在需要的地方使用jQuery。

for (var i = 0; i < pieData2.length; i++) { 
    alert(pieData2[i].label + ' : ' + pieData2[i].value); 
} 

如果你真的想使用jQuery,因为$.each可以遍历数组和对象,你可以用它来迭代这个数组并提醒各。

这将遍历数组中的每个对象,并提醒每个键,值对...

$.each(pieData2, function (key, obj) { 
    alert(obj.label + ' : ' + obj.value); 
}); 

如果您需要遍历数组,并在每个对象(如果你不知道的长度),那么你可以做:

for (var i = 0; i < pieData2.length; i++) { 
    for (var prop in pieData2[i]) { 
     if (pieData2[i].hasOwnProperty(prop)) { 
      alert(prop + ' : ' + pieData2[i][prop]); 
     } 
    } 
} 

$.each(pieData2, function(obj) { 
    $.each(pieData2[obj], function(key, value) { 
     alert(key + ' : ' + value); 
    }); 
}); 
5

jQuery.each()函数用于迭代集合,例如数组中的元素或对象的属性。在你的情况下,它遍历一组对象。在你的代码中,pieData2是你的数组,所以你想把它作为第一个参数传递给$.each()。第二个参数是处理每个迭代的函数,并且有两个参数:indexvalue(尽管您可以根据自己的意愿命名它们)。

$.each(pieData2, function(index, value) { 
    // index will be 0, 1, 2 
    // value will be equivalent to pieData2[0], pieData2[1], pieData2[2] 
    console.log(value.label); // outputs wow, wow2, wow3 
}); 

正如在另一个答案被使用,你也可以使用this关键字来引用该元件看着该次迭代,所以thisvalue在上面的代码是相同的。

+1

...'console.log(value.value); //输出wow,wow2,wow3' ... nope ..而是“30,10,100”...:) –

+0

@AndreasNiedermair你说得对,我看着错误的财产! –