在javascript中检索对象的索引
我在变量在javascript中检索对象的索引,javascript,Javascript,我在变量data中有一个javascript对象,比如: data: Object { aliquota: 23, imponibileLordo: 300, imponibileScontato: "", imposta: 69 } 在另一个函数中,我必须使用如下索引迭代对象: for ( var index = 0; index < data.length; index++ ) { var valueOfIndex = data[index];
data
中有一个javascript对象,比如:
data: Object {
aliquota: 23,
imponibileLordo: 300,
imponibileScontato: "",
imposta: 69
}
在另一个函数中,我必须使用如下索引迭代对象:
for ( var index = 0; index < data.length; index++ ) {
var valueOfIndex = data[index];
console.log(valueOfIndex);
}
您可以使用
Object.keys
获取所有键的数组,并通过该数组循环到与每个键对应的console.log值:
var数据={
配额:23,
英文比勒沃:300,
阳痿,
税款:69
};
Object.keys(data.forEach(key=>console.log(data[key]))
要迭代对象,请使用for..in
var数据={
配额:23,
英文比勒沃:300,
阳痿,
税款:69
}
for(数据中的var索引){
var valueOfIndex=数据[指数];
console.log(valueOfIndex);
}
我必须为循环使用数字索引,因为我根据索引值执行其他操作
然后,您需要重新组织逻辑和代码,以使用数组而不是对象,或者至少以定义的顺序拥有自己的属性名称数组并循环使用。尽管从ES2015开始,对象属性有一个顺序,但这不是您应该使用的顺序,因为它取决于对象的创建方式以及属性的名称(例如,它们看起来是否像数组索引)
通过在对象上使用object.getOwnPropertyNames
并在返回数组中的字符串中循环,可以按ES2015+顺序循环对象的属性,例如:
Object.getOwnPropertyNames(data).forEach((name, index) => {
// `name` will be the property name,
// `index` will be its index in the property order
// ...
});
…但是,再次强调,依赖那些以任何特定顺序排列的属性不是一个好主意。属性不是数字!e、 g.
aliquota
是aliquota
不是0
!对象没有数字索引,除非您定义它们,即使这样,也不能保证它们是连续的/没有间隙。“数据”是对象,不是数组。我已经用实际问题和我目前使用的修复方法更新了代码……这没问题,但不符合我的目的。我已经更新了我的代码
Object.getOwnPropertyNames(data).forEach((name, index) => {
// `name` will be the property name,
// `index` will be its index in the property order
// ...
});