使用带有javascript的for循环记录数组的各个项目

时间:2016-02-11 00:39:13

标签: javascript arrays object for-loop

我有这个代码,我用它来了解更多关于在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!

3 个答案:

答案 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.keysArray.mapArray.join结合使用

Object.keys(foo).map(function(k){ return k + " : " + foo[k]; }).join(", ");