JavaScript

jsでオブジェクトから特定のキーを検索


前提

忘れないためのメモです。

以下のようなオブジェクトがあるとします。

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
}