Javascript 函数返回“[对象对象]”而不是哈希
Javascript function returning '[object Object]' instead of hash
>我有一个函数来挑选输入名称的各个部分:
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
是一个字符串"[对象对象]"
这是怎么回事?
使用 JSON.stringify()
console.log('names', JSON.stringify(names));
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
试试这个;
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)
它真的是一个字符串吗?从函数返回一个对象。
请尝试以下示例:
name = getNameParts($("#person_name").val().split(' '));
console.log("first", name.first);
console.log("middle", name.middle);
console.log("last", name.last);
您可以访问每个属性值。当您尝试将整个对象解析为字符串时,它会按预期返回"[对象对象]"。
>name
不是字符串。它是一个对象,因此当您在控制台中记录此值而不是理想地显示对象的内容时,它会显示它的类型是控制台。
要验证这一点,您可以在其中记录names.first
或任何其他属性
name
是一个对象,但是当您使用特定于供应商的console.log
函数时,它可能会尝试将其参数强制为字符串,具体取决于此特定环境程序员如何实现它。 Object
的默认字符串化方法是返回 [object Object]
,这正是你得到的。
看看这个,它似乎工作得很好:
$(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);
});
当你做控制台.log时,如果你做控制台.log("名称"+名称)并且名称是一个对象,它将显示名称的类型是[对象对象]而不是它的内容。对于字符串和数字可以这样做。
相关文章:
- JavaScript对象作为哈希?复杂性是否大于O(1)
- 哈希被推到猫鼬模型上作为'[对象对象]”;
- Python Javascript哈希库,以确保JSON对象在传输过程中不会损坏
- 在Javascript中,如何使用对象作为哈希映射的键
- Javascript将对象打包为哈希字符串
- 用于跟踪购物车可用性的Javascript数组/对象/哈希表
- 使用 JavaScript 中的对象的哈希表功能
- 对象文字(哈希)与 Promise.all
- Javascript 函数返回“[对象对象]”而不是哈希
- 从两个数组创建/合并对象哈希映射
- 在哈希对象上调用 forEach
- 从作为哈希映射中的键的对象中检索值
- 在引擎盖下,是Javascript对象哈希表
- 为什么在参数传递过程中未评估javascript哈希对象
- 使用对象哈希映射上的索引获取值
- 与哈希表相比,通过循环访问数组中对象的Javascript优化
- 将JavaScript对象/哈希传递给Handlebars助手
- Javascript:什么查找更快:数组.indexOf vs对象哈希值
- 用于嵌套对象哈希的小胡子渲染
- 排序数组/对象/哈希是填充Chrome列表框