如果有JavaScript对象:
var objects={...};
假设,它有超过50个属性,不知道属性名称(即不知道“键”)如何在循环中获得每个属性值?
如果有JavaScript对象:
var objects={...};
假设,它有超过50个属性,不知道属性名称(即不知道“键”)如何在循环中获得每个属性值?
当前回答
const object1 = {
a: 'somestring',
b: 42
};
for (let [key, value] of Object.entries(object1)) {
console.log(`${key}: ${value}`);
}
// expected output:
// "a: somestring"
// "b: 42"
// order is not guaranteed
其他回答
通过使用简单的for..in循环:
for(var key in objects) {
var value = objects[key];
}
兼容ES7,甚至一些浏览器还不支持它
因为object .values(<object>)将内置在ES7 &
在等待所有浏览器支持它之前,你可以将它包装在一个函数中:
Object.vals=(o)=>(Object.values)?Object.values(o):Object.keys(o).map((k)=>o[k])
然后:
Object.vals({lastname:'T',firstname:'A'})
// ['T','A']
一旦浏览器与ES7兼容,你就不需要更改代码中的任何内容。
在ECMAScript5中使用
keys = Object.keys(object);
否则,如果您的浏览器不支持它,请使用众所周知的for. in循环
for (key in object) {
// your code here
}
const myObj = {a:1, b:2, c:3}
获取所有值:
最短的方法: const myValues = Object.values(myObj) const myValues = Object.keys(myObj)。map(key => myObj[key])
如果你可以访问Underscore.js,你可以使用_. js。价值观的作用是这样的:
_.values({one : 1, two : 2, three : 3}); // return [1, 2, 3]