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文字列「[オブジェクトオブジェクト]」です

これはどうしたの?

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);

各プロパティ値にアクセスできます。オブジェクト全体を文字列に解析しようとすると、期待どおりに「[objectObject]」が返されます。

于 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はオブジェクトですが、ベンダー固有の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 に答える
0

name文字列ではありません。これはオブジェクトであるため、理想的にはオブジェクトの内容を表示するのではなく、この値をコンソールに記録すると、コンソールのタイプが表示されます。

これを確認するには、ログに記録するnames.firstか、その中の他のプロパティを確認します

于 2012-06-14T14:49:44.710 に答える