例如,我想将first,middle和last的属性值打印为连接字符串。
最终输出是:" John P. Doe"
var person = {
name: {
first: 'John',
middle: 'P',
last: 'Doe'
},
age: 35,
homeTown: 'Nashville, TN'
};
答案 0 :(得分:2)
您不需要循环,只需连接属性。
var fullname = person.name.first + ' ' + person.name.middle + ' ' + person.name.last;
使用for-in
循环是一个坏主意,因为对象不能保证维持其顺序。因此,最终可能会使用Doe John P.
。
答案 1 :(得分:0)
这些类型的问题已经发布了数百万次,在询问之前做了一些研究。
反正:
alert(person.name.first + ' ' + person.name.middle + ' ' + person.name.last);
答案 2 :(得分:0)
您可以将object.reduce用于此
检查此代码段
var person = {
name: {
first: 'John',
middle: 'P',
last: 'Doe'
},
age: 35,
homeTown: 'Nashville, TN'
};
var nameObject = person.name;
var fullname = Object.keys(nameObject).reduce(function(previous, key) {
return previous +" "+ nameObject[key];
}, "");
console.log(fullname);
希望有所帮助
答案 3 :(得分:0)
您可以使用数组作为所需的属性名称(保持顺序)并映射值并将其连接到空格分隔的字符串。
var person = { name: { first: 'John', middle: 'P', last: 'Doe' }, age: 35, homeTown: 'Nashville, TN' };
console.log(['first', 'middle', 'last'].map(function (k) {
return person.name[k];
}).join(' '));

答案 4 :(得分:0)
您可以使用解构分配
var person = {
name: {
first: 'John',
middle: 'P',
last: 'Doe'
},
age: 35,
homeTown: 'Nashville, TN'
};
var {first, middle, last} = person.name;
var fullname = `${first} ${middle} ${last}`;
console.log(fullname);
答案 5 :(得分:0)
正如Barmar的回答所示,您的示例只需要一个简单的连接即可为您提供结果。
但是,在更一般的情况下,您希望迭代对象的每个属性,如果属性是对象,则也遍历该对象。
例如:
function iterateThroughAllProperties(obj) {
Object.keys(obj).forEach(function(key, index) {
if(typeof obj[key] !== null && typeof obj[key] === 'object') {
iterateThroughAllProperties(obj[key]);
}
else {
// Do something with the property.
console.log(obj[key]);
}
});
}