Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript map(),集合中对象的未定义属性_Javascript_Typescript - Fatal编程技术网

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及其惯例的人交谈。:-)很高兴这有帮助。