从对象读取

时间:2018-09-26 08:30:23

标签: react-native

我想检索标记日期的值,如何从该对象获取标记值为true的所有标记日期:

  alert(JSON.stringify(this.state._markedDates))

{"2018-09-26":{"marked":true}, "2018-09-27":{"marked":false}, "2018-09-29":{"marked":true}}

预期结果:

{"2018-09-26","2018-09-29"}

我尝试了以下操作,但日期列表仍然为空:

    for(var i=0; i<this.state._markedDates.length ; i++)
    {
         if(this.state._markedDates[i].marked == true)
{
this.state.datesList.push(_markedDates[i])
}
    }

3 个答案:

答案 0 :(得分:2)

  let dates = []

  let obj = {"2018-09-26":{"marked":true}, "2018-09-27":{"marked":false}, "2018-09-29":{"marked":true}}

for(date in obj)
{
   if(a[date]["marked"])
   {
      dates.push(date)
   }

}
console.log(dates)

答案 1 :(得分:1)

有不同的处理方法,例如,您可以过滤它们,如下所示:

let dates = ["2018-09-26":{"marked":true}, "2018-09-27":{"marked":false}, "2018-09-29":{"marked":true}];

let filtered = dates.filter( date => {
    if(date.marked === true) {
        return date;
    }
});

// filtered = {"2018-09-26":{"marked":true}, "2018-09-29":{"marked":true}};

这是您获取标记为true的所有日期的方式。

那你就可以做

let keyNames = Object.keys(filtered);
console.log(keyNames); // Outputs ["2018-09-26","2018-09-29"]

作为for循环

let markedDates = [];

for(var i=0; i<this.state._markedDates.length; i++)
{
    if(this.state._markedDates[i].marked === true)
    {
        markedDates.push(_markedDates[i])
    }
}

this.setState({ObjectIWantToSet: markedDates})

答案 2 :(得分:1)

let dates = {
  "2018-09-26":{"marked":true}, 
  "2018-09-27":{"marked":false}, 
  "2018-09-29":{"marked":true}
}
let markedDates=[];

Object.keys(dates).map(date => {
  if(dates[date].marked){ markedDates.push(date)}
})

console.log(markedDates)