我从地图功能获取空项目,而不是有条件创建的项目

开发者爱玛

在ngRx的简化程序中,我试图从与if条件匹配的项目创建单个项目,但改为获取空项目。请帮忙!

这是Reducer代码:

on(rawSignalsActions.changeRangeSchema, (state, { rangeSchemaName }) => ({
...state,
engagementSignal: state.rangeSchemas.map(
    item => {
        if(item.mapping.rangeSchemaName === rangeSchemaName){
            let engagementSignal: EngagementSignal=
            {
                id:0,
                name:'',
                metaSignalName:'',
                rangeSchemaName:'',
                type:2,
                mappedGraphSignals:[],
                signalInputs:[]
            };
            engagementSignal.id = item.mapping.id;
            engagementSignal.name = item.mapping.rangeSchemaName;
            engagementSignal.metaSignalName = item.mapping.metaSignalName;
            engagementSignal.rangeSchemaName = item.mapping.rangeSchemaName;
            engagementSignal.signalCounts = item.signalCounts;
            engagementSignal.type = item.mapping.type;
            engagementSignal.mappedGraphSignals = item.abstractSignals.map(
              signal => {
                let mappedGraphSignal: MappedGraphSignal = {
                    id:0,
                    name:'',
                    totalValues:0,
                    uniqueUsers:0,
                    mappedAttitudes:[],
                    signalRange:[]
                };
                mappedGraphSignal.id = signal.abstractSignal.id;
                mappedGraphSignal.name = signal.abstractSignal.name;
                mappedGraphSignal.totalValues = 1234; //dummy values for now
                mappedGraphSignal.uniqueUsers = 1234;
                mappedGraphSignal.mappedAttitudes = signal.signalAttitudes;
                if (signal.numericMappings) {
                  mappedGraphSignal.signalRange = signal.numericMappings;
                } else {
                  mappedGraphSignal.signalRange = signal.textMappings;
                }
                return mappedGraphSignal;
              }
            );
            //dummy values for now
            engagementSignal.signalInputs = [
              {
                value: '0',
                count: 2376
              },
              {
                value: 'no',
                count: 3423
              },
              {
                value: '1',
                count: 1264
              },
              {
                value: 'yes',
                count: 5423
              }
            ];
            return engagementSignal;
        }
    }
)[0],
linkedRangeSchema: something  
})),

我想获得单个项目对象而不是数组,而丢弃其余的数组。当我调试应用程序时,通过map函数后,我的engagementSignal值为:

在此处输入图片说明

开发者爱玛

通过在数组上应用过滤器,然后通过map函数解决了该问题!

这是工作代码段:

on(rawSignalsActions.changeRangeSchema, (state, { rangeSchemaName }) => ({
...state,
engagementSignal: state.rangeSchemas.filter(item =>item.mapping.rangeSchemaName === rangeSchemaName).map(
    item => {
            let engagementSignal: EngagementSignal=
            {
                id:0,
                name:'',
                metaSignalName:'',
                rangeSchemaName:'',
                type:2,
                mappedGraphSignals:[],
                signalInputs:[]
            };
            engagementSignal.id = item.mapping.id;
            engagementSignal.name = item.mapping.rangeSchemaName;
            engagementSignal.metaSignalName = item.mapping.metaSignalName;
            engagementSignal.rangeSchemaName = item.mapping.rangeSchemaName;
            engagementSignal.signalCounts = item.signalCounts;
            engagementSignal.type = item.mapping.type;
            engagementSignal.mappedGraphSignals = item.abstractSignals.map(
              signal => {
                let mappedGraphSignal: MappedGraphSignal = {
                    id:0,
                    name:'',
                    totalValues:0,
                    uniqueUsers:0,
                    mappedAttitudes:[],
                    signalRange:[]
                };
                mappedGraphSignal.id = signal.abstractSignal.id;
                mappedGraphSignal.name = signal.abstractSignal.name;
                mappedGraphSignal.totalValues = 1234; //dummy values for now
                mappedGraphSignal.uniqueUsers = 1234;
                mappedGraphSignal.mappedAttitudes = signal.signalAttitudes;
                if (signal.numericMappings) {
                  mappedGraphSignal.signalRange = signal.numericMappings;
                } else {
                  mappedGraphSignal.signalRange = signal.textMappings;
                }
                return mappedGraphSignal;
              }
            );
            engagementSignal.signalInputs = [
              {
                value: '0',
                count: 2376
              },
              {
                value: 'no',
                count: 3423
              },
              {
                value: '1',
                count: 1264
              },
              {
                value: 'yes',
                count: 5423
              }
            ];
            return engagementSignal;
    }
)[0],
linkedRangeSchema: something  
})),

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章