Javascript 如何使用for in循环遍历嵌套对象并返回连接的每个属性字符串?
例如,我想将first、middle和last的属性值打印为串联字符串 最终输出为:“John p.Doe”Javascript 如何使用for in循环遍历嵌套对象并返回连接的每个属性字符串?,javascript,string,object,Javascript,String,Object,例如,我想将first、middle和last的属性值打印为串联字符串 最终输出为:“John p.Doe” 您不需要循环,只需连接属性即可 var fullname = person.name.first + ' ' + person.name.middle + ' ' + person.name.last; 使用for in循环将是一个坏主意,因为不能保证对象保持其顺序。因此,你可能会以Doe John P.取而代之。这些类型的问题已经发布了数百万次,在提问之前做一些研究 无论如何: al
您不需要循环,只需连接属性即可
var fullname = person.name.first + ' ' + person.name.middle + ' ' + person.name.last;
使用
for in
循环将是一个坏主意,因为不能保证对象保持其顺序。因此,你可能会以Doe John P.取而代之。这些类型的问题已经发布了数百万次,在提问之前做一些研究
无论如何:alert(person.name.first + ' ' + person.name.middle + ' ' + person.name.last);
为此,可以使用object.reduce 检查此代码段
var-person={
姓名:{
第一个:'约翰',
中间:“P”,
最后:“Doe”
},
年龄:35岁,
家乡:田纳西州纳什维尔
};
var nameObject=person.name;
var fullname=Object.keys(nameObject).reduce(函数(上一个,键){
返回上一个+“”+nameObject[键];
}, "");
console.log(全名)代码>您可以使用一个数组作为所需的属性名称(这将保持顺序),并映射值并将其连接到一个空格分隔的字符串
var person={name:{第一个:“约翰”,中间:“P”,最后一个:“多伊”},年龄:35岁,家乡:田纳西州纳什维尔};
log(['first',middle','last'].map(函数(k){
返回人。名称[k];
}).加入(“”)代码>您可以使用解构赋值
var-person={
姓名:{
第一个:'约翰',
中间:“P”,
最后:“Doe”
},
年龄:35岁,
家乡:田纳西州纳什维尔
};
var{first,middle,last}=person.name;
var fullname=`${first}${middle}${last}`;
console.log(全名)代码>正如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]);
}
});
}
为什么你认为你需要一个循环?只需连接3个属性。是否只有一个人?您提到了一个循环,但您的示例并不需要使用循环。相关:谢谢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]);
}
});
}