如果有JavaScript对象:
var objects={...};
假设,它有超过50个属性,不知道属性名称(即不知道“键”)如何在循环中获得每个属性值?
如果有JavaScript对象:
var objects={...};
假设,它有超过50个属性,不知道属性名称(即不知道“键”)如何在循环中获得每个属性值?
当前回答
如果你可以访问Underscore.js,你可以使用_. js。价值观的作用是这样的:
_.values({one : 1, two : 2, three : 3}); // return [1, 2, 3]
其他回答
使用像这样的填充材料:
if(!Object.values){Object.values=obj=>Object.keys(obj).map(key=>obj[key])}
然后使用
Object.values(my_object)
3)利润!
下面是一个可重用的函数,用于将值放入数组中。它还考虑了原型。
Object.values = function (obj) {
var vals = [];
for( var key in obj ) {
if ( obj.hasOwnProperty(key) ) {
vals.push(obj[key]);
}
}
return vals;
}
显然,正如我最近了解到的,这是最快的方法:
var objs = {...};
var objKeys = Object.keys(obj);
for (var i = 0, objLen = objKeys.length; i < objLen; i++) {
// do whatever in here
var obj = objs[objKeys[i]];
}
现在我使用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']
我知道我来晚了一点,但这是新firefox 47 Object的垫片。值方法
Object.prototype.values = Object.prototype.values || function(obj) {
return this.keys(obj).map(function(key){
return obj[key];
});
};