我有一个类似这样的数据
z_score = 0
probability should be 0.5
z_score = 1.76
probability should be 0.039204
当我尝试使用Javascript迭代它时,返回的值是另一个对象。
我正在尝试做这样的事情
var data = [{"empid":1},{"empid":2},{"empid":3},{"empid":4},{"empid":5},{"empid":6},{"empid":7},{"empid":8},{"empid":9}]
我希望在日志中看到我的empid值作为'value'的一部分,但'value'是另一个对象数组。
小提琴:http://jsfiddle.net/sourabhtewari/b6b3qxo7/
注意:我无法使用属性名来获取值,因为数据是动态的。所以我不能做for (var key in data) {
console.log(' name=' + key + ' value=' + data[key]);
}
答案 0 :(得分:1)
答案 1 :(得分:1)
您需要遍历数组,而不是使用for..in
进行迭代,而是使用常规for循环,在其中您可以使用for..in
,因为每个数组项都是一个对象:
for (var i=0; i<data.length; i++) {
for (var key in data[i]) {
console.log(' name=' + key + ' value=' + data[i][key]);
}
}
答案 2 :(得分:0)
你永远不应该使用for in
来代替对象属性的数组。
使用
for (var i = 0; i < data.length; i++) {
// ..
}
代替。您可以在循环中访问值data[i].empid
。
答案 3 :(得分:0)
这是因为您将对象转换为字符串,如果您只是调用empid
属性,您将看到该值:
for (var key in data) {
console.log(' name=' + key + ' value=' + data[key].empid);
}
您也可以使用其他函数来迭代数组,使用map可以检索属性并将它们存储在另一个数组中:
values = data.map( function(element) {
return element.empid;
}
// values will be an array with all the empid properties
或Array.forEach()
:
data.forEach(function (element) {
console.log(element.empid);
}
答案 4 :(得分:0)
因为它是一个数组而且是数字,所以你可以看看你的代码:
var data = [{"empid":1},{"empid":2},{"empid":3},...];
var data = {0: {"empid":1}, 1:{"empid":2}, {"empid":3}, ...}
当使用for ... in循环时,实际上是将数值赋给key
,循环遍历所有键,但这不是你想要的。当您在该情况下询问值时,您将返回分配给该键的对象!有两种方法可以做到这一点。首先,通过修改代码:
for (var key in data) {
console.log(' name=' + key + ' value=' + data[key].empid);
}
或者使用正确的方法使用常规for
循环遍历数组:
for (var i = 0; o < data.length; i++) {
console.log(' name=' + i + ' value=' + data[i].empid);
}