Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过数组循环而不使用属性_Javascript - Fatal编程技术网

Javascript 通过数组循环而不使用属性

Javascript 通过数组循环而不使用属性,javascript,Javascript,我有一个类似这样的数据 var data = [{"empid":1},{"empid":2},{"empid":3},{"empid":4},{"empid":5},{"empid":6},{"empid":7},{"empid":8},{"empid":9}] for (var key in data) { console.log(' name=' + key + ' value=' + data[key]); } 当我尝试使用Javascript对其进行迭代时,返回的值是另

我有一个类似这样的数据

var data =  [{"empid":1},{"empid":2},{"empid":3},{"empid":4},{"empid":5},{"empid":6},{"empid":7},{"empid":8},{"empid":9}]
for (var key in data) {
    console.log(' name=' + key + ' value=' + data[key]);

}
当我尝试使用Javascript对其进行迭代时,返回的值是另一个对象

我正试着做这样的事情

var data =  [{"empid":1},{"empid":2},{"empid":3},{"empid":4},{"empid":5},{"empid":6},{"empid":7},{"empid":8},{"empid":9}]
for (var key in data) {
    console.log(' name=' + key + ' value=' + data[key]);

}
我希望在日志中将empid值作为“value”的一部分,但“value”是另一个对象数组

小提琴:


注意:我不能使用属性名获取值,因为数据是动态的。所以我不能做类似于JSON.stringify(data[key].empid)的事情,只需调用它的属性即可

data[key].empid

请参阅一个工作示例。

您不应该在迭代对象属性的数组中使用

使用

for(变量i=0;i

相反。您可以在循环中以
数据[i]的形式访问值。empid

您需要在数组中进行迭代,而不是使用
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]);
    }
}

for(var i=0;i这是因为您正在将对象转换为字符串,如果您只调用
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()


因为它是一个数组,并且是数字的,所以您可以这样看待代码:

var data =  [{"empid":1},{"empid":2},{"empid":3},...];
var data = {0: {"empid":1}, 1:{"empid":2}, {"empid":3}, ...}
当使用for…in循环时,实际上是将数值分配给
键,循环所有键,但这不是您想要的。在这种情况下,当您请求值时,您将获得分配给该键的对象!有两种方法可以做到这一点。首先,通过修改代码:

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);
}
for(var i=0;o