我有一个选择输入名称部分的功能:
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]”
这是怎么回事?
答案 0 :(得分:1)
它真的是一个字符串吗?从函数返回一个对象。
尝试以下示例:
name = getNameParts($("#person_name").val().split(' '));
console.log("first", name.first);
console.log("middle", name.middle);
console.log("last", name.last);
您可以访问每个属性值。当您尝试将整个对象解析为字符串时,它会返回“[object Object]”,如预期的那样。
答案 1 :(得分: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)
答案 2 :(得分:1)
使用JSON.stringify()
console.log('names', JSON.stringify(names));
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
答案 3 :(得分:0)
name
不是字符串。它是一个对象,所以当你在控制台中记录这个值而不是理想地显示对象的内容时,它会显示它的类型是控制台。
要验证这一点,您可以记录names.first
或其中的任何其他属性
答案 4 :(得分:0)
name
是一个对象,但是当您使用特定于供应商的console.log
函数时,它可能会尝试将其参数强制转换为字符串,具体取决于此特定环境程序员如何实现它。 Object
的默认stringification method将返回[object Object]
,这正是您所获得的。
答案 5 :(得分: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)并且名称是一个对象,它将显示[object object]的名称类型而不是它的内容。对于字符串和数字,可以这样做。