JavaScript map(),集合中对象的未定义属性
我有一个过滤器对象的集合,它是JavaScript map(),集合中对象的未定义属性,javascript,typescript,Javascript,Typescript,我有一个过滤器对象的集合,它是this.selectedFilters 我使用JS-map方法仅选择过滤器对象的字段属性 console.log(this.selectedFilters.map((val) => { console.log(val); console.log(val.field); console.log(val['field']); return val.field;
this.selectedFilters
我使用JS-map方法仅选择过滤器对象的字段
属性
console.log(this.selectedFilters.map((val) => {
console.log(val);
console.log(val.field);
console.log(val['field']);
return val.field;
}));
结果是:
有人能告诉我为什么val.field
给出了一个未定义的值吗(
我用的是打字脚本
更新:
我想我知道为什么
val
是字符串。可能是因为this.selectedFilters
是select
HTML元素的ng模型(启用了多个)选项具有对象值。可能选项值在传输到this时从对象转换为json字符串。selectedFilters
model最有可能的答案是val
是一个字符串,包含您在控制台中看到的json。如果它是一个对象,控制台输出将为k不同
看起来您需要在其中放置一个JSON.parse
。您还没有显示原始的TypeScript,但在JavaScript中它看起来是这样的:
console.log(this.selectedFilters.map((val) => {
val = JSON.parse(val); // <====
console.log(val);
console.log(val.field);
console.log(val['field']);
return val.field;
}));
console.log(this.selectedFilters.map((val)=>{
val=JSON.parse(val);//this.selectedFilters的内容是什么?它实际上很长。但它包含两个在第一个日志上看到的对象。您使用的浏览器是什么?只是为了让我们知道如何解释console.log屏幕截图。看起来像Chrome,但是…什么JSON.parse(val)
gives?是的,我正在使用chrometried通过typescript来转换它:console.log((val.field);仍然没有定义。或者我的转换正确吗?@RojBeraña:转换可以进行JSON解析吗?我倾向于认为不会,但我不会“执行”typescript。这对于转换操作来说是一件奇怪的事情。谢谢!成功了!var r=JSON.parse(val);(f).field;我必须等待几分钟才能选择您的答案:)当我的typescript代码实际上是:this.selectedFilters.map((val:holmes.reports.IReportFilter)=>{console.log(val.field)时,我不明白为什么typescript没有将其视为holmes.reports.IReportFilter对象@RojBeraña:我认为这是因为val
是一个字符串,而不是一个对象。对于强制转换操作来说,猜测字符串应该通过JSON.parse
运行是一种奇怪的行为(而不是被解释为XML或其他任何数据格式).但同样,您必须与更熟悉TypeScript及其惯例的人交谈。:-)很高兴这有帮助。