2012-06-14 24 views
0

的我有挑選出輸入的名稱的部分功能:JavaScript函數返回「的翻譯:」來代替哈希

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是一個字符串 「[對象的對象]」

怎麼了這件事?

+0

不知道你要問什麼,因爲[目標對象]是我期望的那樣。 'names'是你代碼中的一個對象。 – kevin628

+0

我在問,因爲[對象對象]是一個字符串,而不是一個哈希對象 – Luke

回答

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 
    } 

///申報名稱varible

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

@Luke在使用前聲明你的varibale ,,,它工作正常 –

+0

不錯!是的,這是問題,謝謝!我傾向於忘記聲明我的變量,因爲我主要使用ruby和coffeescript編程。 – Luke

1

它真的是一個字符串嗎?你從你的函數返回一個對象。

嘗試下面的示例:

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

您可以訪問每個屬性值。當您嘗試將整個對象解析爲字符串時,它會按照預期返回「[object Object]」。

+0

我已經這樣做了,只是沒有在問題中包含它。對於散列的每個部分,我都會得到'undefined'。在我的代碼中,我甚至把名字改成了window.name,看看我能對它做些什麼方法,所有的自動完成方法都是字符串類型方法 – Luke

0

name不是字符串。它是一個對象,所以當你在控制檯中記錄這個值而不是理想地向你顯示對象的內容時,它顯示它是控制檯的類型。

爲了驗證這一點,您可以登錄names.first或者它

0

name是一個對象,但是當你使用特定供應商的console.log功能,它可能會嘗試這取決於如何這個特定的環境,強迫它的參數字符串程序員實現了它。 Object的默認stringification method將返回[object Object],這正是您所得到的。

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(「名」 +名)和姓名是一個對象,它將顯示[object Object]的類型名稱,而不是其內容。對於字符串和數字是沒問題的。