如果有一个 JavaScript 对象:
var objects={...};
假设一个对象拥有50个以上的属性,不知道这些属性名(也就是不知道'keys'),如何在循环中获取每个属性的值?
var objects={...};
假设一个对象拥有50个以上的属性,不知道这些属性名(也就是不知道'keys'),如何在循环中获取每个属性的值?
据我最近了解,这是最快的方法:
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]];
}
可以使用类似于 polyfill 的东西:
if(!Object.values){Object.values=obj=>Object.keys(obj).map(key=>obj[key])}
Object.values(my_object)
3) 利润!
对于那些早期采用CofeeScript的人,这里有另一个等效的选择。
val for key,val of objects
这可能比现有的更好,因为对象
可以被简化为再次输入并减少可读性。
objects[key] for key of objects
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
Object.values
方法的垫片。请注意,保留了HTML标签。Object.prototype.values = Object.prototype.values || function(obj) {
return this.keys(obj).map(function(key){
return obj[key];
});
};
我认为最简单的选项是这样的:
Object.keys(data).forEach(function (key, index) {
var value = data[key];
console.log(key, index, value);
});
const user = {
name: 'Alex',
age: 30,
};
Object.keys(user).forEach(function (key, index) {
var value = user[key];
console.log(key, index, value);
});
Object.values()
,我们将一个对象作为参数传入,并接收一个值的数组作为返回值。for in
循环相同的值,但不包括原型上的属性。以下示例可能会使事情更清晰:
function person (name) {
this.name = name;
}
person.prototype.age = 5;
let dude = new person('dude');
for(let prop in dude) {
console.log(dude[prop]); // for in still shows age because this is on the prototype
} // we can use hasOwnProperty but this is not very elegant
// ES6 +
console.log(Object.values(dude));
// very concise and we don't show props on prototype
Object.entries以更好的方式执行它。
var dataObject = {"a":{"title":"shop"}, "b":{"title":"home"}}
Object.entries(dataObject).map(itemArray => {
console.log("key=", itemArray[0], "value=", itemArray[1])
})
自从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']
我们可以使用以下三种方法获取数据
使用 map 函数
data.map( item => { console.log(item) }
使用 for 循环
for( let i = 0; i < data.length; i++){
console.log(item);
}
使用 for 循环
for(key in data) {
if(data.hasOwnProperty(key)) {
const value = data[key];
console.log(value);
}
}