【问题标题】:Log the individual items of an array with a for loop with javascript使用 javascript 使用 for 循环记录数组的各个项目
【发布时间】:2016-02-11 00:39:13
【问题描述】:

我有这段代码,我用它来了解更多关于在 javascript 中更新对象的信息。这段代码应该将 gabe 的名称从 Paolo 更新为 Gabriel,它运行良好,但我认为在 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!

【问题讨论】:

  • console.log(JSON.stringify(gabe[i]))?

标签: javascript arrays object for-loop


【解决方案1】:

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 将为您提供对象内的属性名称。

【讨论】:

  • 好的,所以我需要一个 for in 循环。我完全忘记了这一点!谢谢!
  • 在写评论时,我意识到——我不知道如何将你的代码与我的代码合并。我试过:var j = gabe; 但这没有用。我怎么能用我的代码执行你的代码?
  • 我刚刚对代码进行了编辑,可以帮助您更好地集成。您不需要创建变量 gabriel 的另一个实例或尝试将其转换为数组。 for...in 循环可以很好地满足您的需求。
【解决方案2】:

所以有几种不同的方法可以达到同样的目的。

您可以在您的项目上实现.toString

var foo = {
    bar : "moo",
    woo : "miaow",
    toString : function(){
        return "bar : " + this.bar + ", woo : " + this.woo;
    }
}

或者,我最喜欢的,使用Object.keys 结合Array.mapArray.join

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

【讨论】:

    【解决方案3】:

    另一种方式,使用正则表达式和 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>');
    }

    【讨论】:

      猜你喜欢
      • 2019-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-14
      • 2014-07-20
      • 1970-01-01
      • 2019-02-23
      • 1970-01-01
      相关资源
      最近更新 更多