如果有JavaScript对象:
var objects={...};
假设,它有超过50个属性,不知道属性名称(即不知道“键”)如何在循环中获得每个属性值?
如果有JavaScript对象:
var objects={...};
假设,它有超过50个属性,不知道属性名称(即不知道“键”)如何在循环中获得每个属性值?
当前回答
对象。条目可以更好地做到这一点。
var dataObject = {" a ":{“标题”:“店”},“b”:{“标题”:“家”}} Object.entries (dataObject)。map(itemArray => { console.log("key=", itemArray[0], "value=", itemArray[1]) })
其他回答
我们可以使用以下三种方法获取数据
使用地图功能
data.map( item => { console.log(item) }
使用for循环
for( let i = 0; i < data.length; i++){
console.log(item);
}
使用for in循环
for(key in data) {
if(data.hasOwnProperty(key)) {
const value = data[key];
console.log(value);
}
}
ECMA2017开始:
Object.values(obj)将以数组的形式获取所有属性值。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Object/values
对于那些早期适应CofeeScript时代的人来说,这里有另一个等价的东西。
val for key,val of objects
这可能比这样更好,因为可以减少对象,重新键入,降低可读性。
objects[key] for key of objects
使用:object .values(),我们传入一个对象作为参数,并接收一个数组的值作为返回值。
这将返回给定对象的可枚举属性值的数组。你将得到与使用for in循环相同的值,但没有Prototype上的属性。下面这个例子可能会让事情更清楚:
函数人(姓名){ This.name = name; } Person.prototype.age = 5; 让dude =新人('dude'); 对于(让道具在伙计){ console.log(老兄[支持]);// for in仍然显示年龄,因为这是在原型上 } //我们可以使用hasOwnProperty,但这不是很优雅 // es6 + console.log (Object.values(伙计)); //非常简洁,我们不显示原型上的道具
我认为最简单的选择是这样的:
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(键,索引,值); });