如果有JavaScript对象:
var objects={...};
假设,它有超过50个属性,不知道属性名称(即不知道“键”)如何在循环中获得每个属性值?
如果有JavaScript对象:
var objects={...};
假设,它有超过50个属性,不知道属性名称(即不知道“键”)如何在循环中获得每个属性值?
当前回答
var objects={...}; this.getAllvalues = function () {
var vls = [];
for (var key in objects) {
vls.push(objects[key]);
}
return vls;
}
其他回答
下面是一个可重用的函数,用于将值放入数组中。它还考虑了原型。
Object.values = function (obj) {
var vals = [];
for( var key in obj ) {
if ( obj.hasOwnProperty(key) ) {
vals.push(obj[key]);
}
}
return vals;
}
通过使用简单的for..in循环:
for(var key in objects) {
var value = objects[key];
}
现在我使用Dojo Toolkit,因为旧的浏览器不支持Object.values。
require(['dojox/lang/functional/object'], function(Object) {
var obj = { key1: '1', key2: '2', key3: '3' };
var values = Object.values(obj);
console.log(values);
});
输出:
['1', '2', '3']
我认为最简单的选择是这样的:
Object.keys(data).forEach(function (key, index) {
var value = data[key];
console.log(key, index, value);
});
例如,这里添加了一个可运行的代码:
Const user = { 名称:“亚历克斯”, 年龄:30岁 }; 种(用户)。forEach(函数(键,索引){ Var值= user[key]; Console.log(键,索引,值); });
兼容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兼容,你就不需要更改代码中的任何内容。