0

我有一个功能可以挑选出输入名称的各个部分:

  function getNameParts(list) {
    first_name = list[0];
    middle_name = "";
    last_name = list[1];
    if(list.length > 2) {
      middle_name = list[1];
      last_name = list[2];
    }
    names = {"first": first_name, "middle": middle_name, "last": last_name};
    console.log("names", names)
    return names
  }

控制台声明这names是此函数内部的哈希。

但是当我像这样使用这个功能时:

name = getNameParts($("#person_name").val().split(' '));
console.log("name", name)

name是一个字符串“[object Object]”

这是怎么回事?

4

6 回答 6

1

它真的是一个字符串吗?你从你的函数返回一个对象。

尝试以下示例:

name = getNameParts($("#person_name").val().split(' '));
console.log("first", name.first);
console.log("middle", name.middle);
console.log("last", name.last);

您可以访问每个属性值。当您尝试将整个对象解析为字符串时,它按预期返回“[object Object]”。

于 2012-06-14T14:47:51.663 回答
1

试试这个;

function getNameParts(list) {
    var first_name = list[0];
   var middle_name = "";
    var last_name = list[1];
    if(list.length > 2) {
      middle_name = list[1];
      last_name = list[2];
    }
    var names = {"first": first_name, "middle": middle_name, "last": last_name};
    console.log("names", names)
    return names
  }

/// 声明名称变量

var name = getNameParts($("#person_name").val().split(' '));
console.log("name", name)
于 2012-06-14T14:53:05.280 回答
1

使用 JSON.stringify()

console.log('names', JSON.stringify(names));

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

于 2015-12-10T22:35:13.130 回答
0

name不是字符串。它是一个对象,因此当您在控制台中记录此值而不是理想地显示对象的内容时,它显示的是它的类型,即控制台。

要验证这一点,您可以登录names.first或其中的任何其他属性

于 2012-06-14T14:49:44.710 回答
0

name是一个对象,但是当您使用特定于供应商的console.log函数时,它可能会尝试将其参数强制转换为字符串,具体取决于此特定环境程序员如何实现它。Object的默认字符串化方法是 return [object Object],这正是你得到的。

于 2012-06-14T14:56:00.770 回答
0

看看这个,它似乎工作得很好:

 $(document).ready(function() {
      function getNameParts(list) {
            var first_name = list[0],
                middle_name = "",
                last_name = list[1],
                names;

            if(list.length > 2) {
                middle_name = list[1];
                last_name = list[2];
            }
            names = {"first": first_name, "middle": middle_name, "last": last_name};
            console.log(names)
            return names;
        }

        var testString = "aaa bbb ccc";
        var name = getNameParts(testString.split(' '));
        console.log(name);

        console.log(name.first + " " + name.middle + " " + name.last);

   });

当您执行console.log 时,如果您执行console.log("name" + names) 并且names 是一个对象,它将显示为[object Object] 而不是其内容的名称类型。对于字符串和数字,这样做是可以的。

于 2012-06-14T15:02:28.053 回答