前提
忘れないためのメモです。
以下のようなオブジェクトがあるとします。
const events = {
'2019-03-09':
[
{
id: 1,
title: 'お出かけ',
detaile: 'イオンでお買い物',
},
{
id: 2,
title: '勉強',
detaile: 'javascriptの勉強',
},
]
'2019-03-10':
[
{
id: 3,
title: 'お留守番',
detaile: '自宅警備員',
},
]
// ...予定色々
}
このオブジェクトから2019年03月9日の予定を検索して抜き出します。
ループでやってた
オブジェクトのキーのみを抜き出して、ループさせます。
const eventDates = Object.kyes(events);
for(let i = 0; i < eventDates.lenght; i++){
if(eventDates[i] === '2019-03-09'){
const event = events[eventDates[i]];
}
}
可読性も悪く良いコードとは言い難いですね。
forは使わなくても良い
if(!!events['2019-03-09']){
const event = events['2019-03-09'];
}
これでいけるらしいです。。。
上記の場合キーが存在していたとしても、値が空文字や0の場合false判定されてしまいます。
in演算子を使う
in演算子を使用すればキーの存在有無を確かめることができます。
if ('2019-03-09' in events){
const event = events['2019-03-09'];
}
falseの場合はundefindが返ります。
if ('2019-03-33' in events){
const event = events['2019-03-33'];
} else {
console.log("存在しない");
// undefind
}