下面,您可以看到这两个日志的输出。第一行代码清楚地显示了我试图访问的属性的完整对象,但在下一行代码中,我无法使用配置访问它。Col_id_3(见截图中的“undefined”?)有人能解释一下吗?我也可以访问除field_id_4之外的所有其他属性。
console.log(config);
console.log(config.col_id_3);
这就是这些行在控制台中打印的内容
下面,您可以看到这两个日志的输出。第一行代码清楚地显示了我试图访问的属性的完整对象,但在下一行代码中,我无法使用配置访问它。Col_id_3(见截图中的“undefined”?)有人能解释一下吗?我也可以访问除field_id_4之外的所有其他属性。
console.log(config);
console.log(config.col_id_3);
这就是这些行在控制台中打印的内容
当前回答
console.log(anObject)的输出是误导性的;通过单击>展开控制台中显示的对象树,显示的对象的状态才会解析。当你console.log对象时,它不是对象的状态。
相反,尝试console.log(object .keys(config)),甚至console.log(JSON.stringify(config)),您将看到调用console.log时的键或对象的状态。
您将(通常)发现在console.log调用之后添加了键。
其他回答
关于这个问题,我已经尝试了很多答案 终于发现发生了什么事。
虽然对象在console.log(foo)上打印,但只有在使用new foo()时才会生成get和set方法。 你必须用平面js对象初始化实例
请看:https://stackoverflow.com/a/41153231/5954248
我的数据只是json数据字符串。(这个变量在会话中存储为json字符串)。
console.log(json_string_object)
->只返回该字符串的表示形式,无法区分是string还是object。
所以为了让它工作,我只需要把它转换回真实对象:
object = JSON.parse(json_string_object);
我也有同样的问题。我的解决方案是使用字符串化输出作为解析JSON的输入。这对我很管用。希望对你有用
var x =JSON.parse(JSON.stringify(obj));
console.log(x.property_actually_now_defined);
在这个回答的背景下: https://stackoverflow.com/a/52994419
重新生成文件的解决方案可能并不总是可行的。去除字符串前的“非空格”字符。所以,如果你能修剪字段名,就能把事情清理干净。
就像这样:
const records = parse(csvData, {
columns: (colNameArray) => {
return colNameArray.map((value, index) => {
return index === 0 ? value.trim() : value;
});
},
onRecord: mapper.mapRow
});
如果您不关心这个的性能,也可以跳过索引检查。
我刚刚遇到了由CSV -parser从MS Excel生成的CSV文件生成的对象的问题。我能够访问除第一个属性之外的所有属性-但如果我使用console.log编写整个对象,它将显示ok。
结果UTF-8 CSV格式在开头插入3个字节(ef bb bf),对应于一个不可见的字符-这被包括在CSV -parser的第一个属性头中。解决方案是使用非utf选项重新生成CSV,这消除了不可见字符。