下面,您可以看到这两个日志的输出。第一行代码清楚地显示了我试图访问的属性的完整对象,但在下一行代码中,我无法使用配置访问它。Col_id_3(见截图中的“undefined”?)有人能解释一下吗?我也可以访问除field_id_4之外的所有其他属性。

console.log(config);
console.log(config.col_id_3);

这就是这些行在控制台中打印的内容


当前回答

在这个回答的背景下: 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
    });

如果您不关心这个的性能,也可以跳过索引检查。

其他回答

我遇到过这样的问题,发现解决方案与Underscore.js有关。我最初的日志记录毫无意义:

console.log(JSON.stringify(obj, null, 2));

> {
>   "code": "foo"
> }

console.log(obj.code);

> undefined

我还通过查看对象的键找到了解决方案:

console.log(JSON.stringify(Object.keys(obj)));

> ["_wrapped","_chain"]

这让我意识到obj实际上是一个围绕对象的Underscore.js包装器,最初的调试对我撒谎了。

我刚刚从MongoDB使用Mongoose加载文档时遇到了同样的问题。

原来,我使用属性find()只返回一个对象,所以我把find()改为findOne(),一切都为我工作。

解决方案(如果您正在使用Mongoose):确保只返回一个对象,这样您就可以解析它的对象。Id或者它将被视为数组所以你需要像访问对象[0]。Id那样访问它。

没有一个JSON stringify/parse对我有用。

formValues.myKey:               undefined
formValues.myKey with timeout:  content

我想要formValues的值。myKey是什么技巧是setTimeout 0,就像下面的例子。希望能有所帮助。

console.log('formValues.myKey: ',formValues.myKey);
setTimeout( () => { 
  console.log('formValues.myKey with timeout: ', formValues.myKey);
}, 0 );

console.log(anObject)的输出是误导性的;通过单击>展开控制台中显示的对象树,显示的对象的状态才会解析。当你console.log对象时,它不是对象的状态。

相反,尝试console.log(object .keys(config)),甚至console.log(JSON.stringify(config)),您将看到调用console.log时的键或对象的状态。

您将(通常)发现在console.log调用之后添加了键。

我刚刚从MongoDB使用Mongoose加载文档时遇到了这个问题。

当在整个对象上运行console.log()时,所有文档字段(存储在db中)都会显示出来。然而,当其他属性(包括_id)正常工作时,一些单独的属性访问器将返回undefined。

事实证明,属性访问器只适用于我的mongodb . schema(…)定义中指定的字段,而console.log()和JSON.stringify()返回存储在db中的所有字段。

解决方案(如果你正在使用Mongoose):确保你所有的db字段都是在Mongoose . schema(…)中定义的。