我有季节对象和selectedSeasonIds
,它保存数据是否选择了所选键。
我将数组重构为对象数据结构以获得更好的性能。
我希望在拥有这些数据的情况下呈现所选季节
seasons = {30: 'Fall', 31: 'Spring', 32: 'All'}
selectedSeasonIds = {30: true, 31: false, 32: true}
let output = selectedSeasonIds.????
// {30: 'Fall', 32: 'All'} <- This is my goal
我使用选择器来选择所选对象。但我没有看到使用它的任何好处。请随意使用我的代码或创建更好的代码。这是我的代码片段
这是我的选择器。
const getSeasons = (seasons, selectedSeasonIds) => {
const selectedSeasons = _.filter(
seasons,
season => _.includes(selectedSeasonIds, season.id)
);
return selectedSeasons;
}
我从选择器中获取所选对象
selectedSeasons = SelectedSeasonsSelector(this.state) << getting selector
if(selectedSeasons.length==0) {
return '-'
}
let seasonList = selectedSeasons.map((season) => {
return ' '+season.value;
})
return seasonList
谢谢!
答案 0 :(得分:1)
您可以使用array#reduce
并添加条件,仅在true
中selectedSeasonIds
的输出中添加这些值。
const seasons = {30: 'Fall', 31: 'Spring', 32: 'All'};
const selectedSeasonIds = {30: true, 31: false, 32: true};
let output = Object.keys(selectedSeasonIds).reduce((r,k) => {
if(selectedSeasonIds[k])
r[k] = seasons[k] || '';
return r;
}, {});
console.log(output);
&#13;
答案 1 :(得分:0)
对象中的键是可访问的属性,可以这样得到:
selectedSeasonIds = {30: true, 31: false, 32: true}
Object.keys(selectedSeasonIds); //Gets an array of keys
for (let key in selectedSeasonIds){//Iterate through the keys};
之后访问选定的季节应该是微不足道的。