我有一个如下所示的对象。它被称为selectedFilters。
selectedFilters = [
{columnName: "gender", values: ["Male"]},
{columnName: "approximate_age_band", values: ["18-29", "30-39", "40-49"]},
{columnName: "custom_flag2", values: ["1686", "2245", "2255"]}
]
我有一个名为menuOptions的对象,它具有多个属性,例如模式、currentSelection、过滤器、段等。下面是它的外观。
{toggles: {…}, modes: {…}, viewOptions: {…}, segments: Array(3), filters: {…}, …} currentSelection: {default: "percent", order: 1, label: "View", type: "filter", value: "total", …} filters: {mainFilters: Array(3), standard: Array(4), custom: Array(4), maxFilters: 4} modes: {selected: "trends", options: Array(1)} segments: (3) [{…}, {…}, {…}]
现在我必须使用menuOptions.filters并在其中应用一些逻辑。menuOptions.filters的结构如下所示。
我想遍历menuOptions.filters.standard。
menuOptions.filters.standard = [
{columnName: "gender", selected: null},
{columnName: "approximate_age_band", selected: null},
{columnName: "custom_flag2", selected: null}
]
我想将selectedFilters与menuOptions.filters.standard进行比较。如果列名匹配,则向menuOptions.filters.standard对象插入一个新属性,使其如下所示。
menuOptions.filters.standard = [
{columnName: "gender", selected: "Male"},
{columnName: "approximate_age_band", selected: ""18-29,30-39,40-49""},
{columnName: "custom_flag2", selected: "1686,2245,2255"}
]
我尝试过以下方式。
let i = 0;
selectedFilterList.forEach(function (choice) {
if(this.menuOptions.filters.standard[i]['columnName'] === choice['columnName']){
this.menuOptions.filters.standard[i]['selected'] = choice['values'];
i = i+1;
}
});
但上述逻辑抛出错误:core.js:4002 ERROR TypeError: Cannot read property 'menuOptions' of undefined。但是在循环之外,我可以访问 this.menuOptions。里面是抛出错误。
