【问题标题】:'contact list' exercise not running correctly in chrome“联系人列表”练习在 chrome 中未正确运行
【发布时间】:2015-11-19 19:07:26
【问题描述】:

Codecademy 代码

我已经在 Codecademy 中成功完成了题为“联系人列表”的 JavaScript 练习,代码如下:

var friends = {};
friends.bill = {
  firstName: "Bill",
  lastName: "Gates",
  number: "(206) 555-5555",
  address: ['One Microsoft Way','Redmond','WA','98052']
};
friends.steve = {
  firstName: "Steve",
  lastName: "Jobs",
  number: "(408) 555-5555",
  address: ['1 Infinite Loop','Cupertino','CA','95014']
};

var list = function(obj) {
  for(var prop in obj) {
    console.log(prop);
  }
};

var search = function(name) {
  for(var prop in friends) {
    if(friends[prop].firstName === name) {
      console.log(friends[prop]);
      return friends[prop];
    }
  }
};

list(friends);
search("Steve");

这个输出:

账单

史蒂夫

{ firstName: '史蒂夫',

姓氏:'工作',

号码:'(408) 555-5555',

地址:['1 无限循环','Cupertino','CA','95014'] }

{"firstName":"史蒂夫",

"姓氏":"职位",

"号码":"(408) 555-5555",

"address":["1 >无限循环","Cupertino","CA","95014"]}


然后我稍微更改了列表和搜索功能,以便正确输出 chrome:

var list = function(obj) {
  for(var prop in obj) {
    document.write(prop + "<br>");
  }
};

var search = function(name) {
  for(var prop in friends) {
    if(friends[prop].firstName === name) {
      document.write(friends[prop]);
      return friends[prop];
    }
  }
};

这返回了输出:

账单

史蒂夫

[对象对象]

问题

这个[object Object] 输出来自哪里?

如何从搜索功能返回正确的输出?

注意

列表功能正常,但搜索功能出现问题。 for 循环中的friends[prop].firstName 没有返回任何内容。

提前感谢您的帮助

【问题讨论】:

    标签: javascript google-chrome


    【解决方案1】:

    字符串[object Object] 是Javascript 对象的默认字符串表示。当您尝试 write 输出任何对象时,您会得到它。在您的示例中,console.log 会自动为您转换:

    document.write({});
    document.write({ a: 'b' });

    使用 JSON 可以输出更有用的 JS 对象版本。值得庆幸的是,JS 提供了一个很好的小函数来将对象转换为字符串:

    document.write(JSON.stringify({}));
    document.write(JSON.stringify({ a: 'b' }));

    【讨论】:

    • 感谢 JSON.stringify({});功能,很实用,谢谢
    【解决方案2】:

    document.write(friends[prop]) 显示输出为[object Object],按属性名称访问属性。

    var search = function (name) {
            for (var prop in friends) {
                if (friends[prop].firstName === name) {
                    //document.write(friends[prop]);
                    var oProp = friends[prop]
                    document.write(oProp.address + "<br/>" + oProp.firstName);
                    //return friends[prop] - as an object
                    //return oProp.address - as a single property
                    //return JSON.stringify(oProp) - as a JSON string
                    return friends[prop];
                }
            }
       };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多