我有这个代码,我用它来了解更多关于在javascript中更新对象的信息。这段代码应该更新从Paolo到Gabriel的gabe的名称并且它运行良好但我认为在for循环中,我将获得每个单独的键值,而是我得到对象并看到更新已经完成。
我的问题是如何使用for循环在控制台中打印每个键的值?这是代码:
var gabriel = {
firstName: "Paolo",
lastName: "Avila"
}
console.log(gabriel.firstName + " " + gabriel.lastName);
gabriel.nickName = "Cai Cai";
gabriel.firstName = "Gabriel";
var gabe = [gabriel];
for(var i = 0; i < gabe.length; i++){
console.log(gabe[i]);
}
我目前在控制台中得到这个:
Object {firstName: "Gabriel", lastName: "Avila", nickName: "Cai Cai"}
如何才能打印:firstName: "Gabriel", lastName: "Avila", nickName: "Cai Cai"
。
TIA!
答案 0 :(得分:0)
JavaScript中的对象可以像数组一样访问。这是一个这样做的例子:
var gabriel = {firstName: "Gabriel", lastName: "Avila", nickName: "Cai Cai"};
for (var i in gabriel) { console.log(i+" - "+gabriel[i]); }
这输出以下内容:
firstName - Gabriel
lastName - Avila
nickName - Cai Cai
在这种情况下,在循环中变量i
将在对象中为您提供属性的名称。
答案 1 :(得分:0)
使用regex和JSON.stringify的另一种方法可能是:
var gabriel = {
firstName: "Paolo",
lastName: "Avila"
}
document.write('<p>' + gabriel.firstName + " " + gabriel.lastName + '</p>');
gabriel.nickName = "Cai Cai";
gabriel.firstName = "Gabriel";
var gabe = [gabriel];
for(var i = 0; i < gabe.length; i++) {
var str = JSON.stringify(gabe[i]).replace(/^{(.*)}$/, '$1')
.replace(/"([A-Za-z0-9_]+)"\:/g, '$1: ').replace('",', '", ');
document.write('<p>' + str + '</p>');
}
答案 2 :(得分:0)
因此,有几种不同的方法可以达到同样的目的。
您可以对商品实施.toString
:
var foo = {
bar : "moo",
woo : "miaow",
toString : function(){
return "bar : " + this.bar + ", woo : " + this.woo;
}
}
或者,我的最爱,使用Object.keys
与Array.map
和Array.join
结合使用
Object.keys(foo).map(function(k){ return k + " : " + foo[k]; }).join(", ");