如何从对象中查找所选对象

时间:2017-11-07 05:48:39

标签: javascript

我有季节对象和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

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用array#reduce并添加条件,仅在trueselectedSeasonIds的输出中添加这些值。

&#13;
&#13;
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;
&#13;
&#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};

之后访问选定的季节应该是微不足道的。