JavaScript map(),集合中对象的未定义属性

时间:2015-06-04 09:07:32

标签: javascript typescript

我有一组过滤器对象this.selectedFilters

我使用JS map方法仅选择过滤器对象的field属性。

 console.log(this.selectedFilters.map((val) => {
            console.log(val);
            console.log(val.field);
            console.log(val['field']);
            return val.field;
        }));

结果是:

enter image description here

有人可以告诉我val.field为什么会给出一个未定义的值? :(

PS:我使用的是TypeScript

更新

我想我知道为什么val是一个字符串。也许是因为this.selectedFiltersselect HTML元素的ng模型(多个已启用),其中选项具有对象值。当传输到this.selectedFilters模型

时,可能将选项值从对象转换为json字符串

1 个答案:

答案 0 :(得分:1)

最可能的答案是val字符串,其中包含您在控制台中看到的JSON。如果它是一个对象,控制台输出看起来会有所不同。

看起来您需要在其中放置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;
}));