如果有JavaScript对象:
var objects={...};
假设,它有超过50个属性,不知道属性名称(即不知道“键”)如何在循环中获得每个属性值?
如果有JavaScript对象:
var objects={...};
假设,它有超过50个属性,不知道属性名称(即不知道“键”)如何在循环中获得每个属性值?
当前回答
你可以循环遍历键:
foo = {one:1, two:2, three:3};
for (key in foo){
console.log("foo["+ key +"]="+ foo[key]);
}
将输出:
foo[one]=1
foo[two]=2
foo[three]=3
其他回答
这个问题没有指定是否也需要继承的和不可枚举的属性。
获得谷歌不容易找到的所有东西,包括继承的属性和不可枚举的属性,都存在一个问题。
如果我们要获得所有继承的和不可枚举的属性,我的解决方案是:
function getAllPropertyNames(obj) {
let result = new Set();
while (obj) {
Object.getOwnPropertyNames(obj).forEach(p => result.add(p));
obj = Object.getPrototypeOf(obj);
}
return [...result];
}
然后遍历它们,只需要使用for-of循环:
函数getAllPropertyNames(obj) { let result = new Set(); While (obj) { Object.getOwnPropertyNames (obj)。forEach(p => result.add(p)); obj = Object.getPrototypeOf(obj); } 返回结果[…]; } 让obj = { 美国广播公司(abc): 123, 某某:1.234, foobar:“你好” }; for (p of getAllPropertyNames(obj)) console.log(p);
现在我使用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']
对象。条目可以更好地做到这一点。
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);
}
}
使用像这样的填充材料:
if(!Object.values){Object.values=obj=>Object.keys(obj).map(key=>obj[key])}
然后使用
Object.values(my_object)
3)利润!