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
这会很慢,因为JavaScript将在每次迭代中计算长度属性:)或不计算!现代浏览器可以缓存它。在旧版浏览器中,您可以自己执行此操作,但这会使代码不太清晰。@RGraham,请检查在访问JavaScript中数组的length属性时发生的反向循环和迭代过程#basics101@AllanChua我知道这一切,我经常自己缓存长度,但称之为慢是一种严重的夸张。这充其量只是一个微优化,可以安全地从堆栈溢出答案中忽略。