新規投稿
フォローする

多次元配列での.filter使用について

お世話になっております。
Promise.allで2つの関数を呼び出し、その戻り値の中にあるサブテーブルの値と同じものがあるかを.filterで抽出したいと思っております。
ただ多次元配列での.filterの書き方がわからずどのように書けばいいのか教えて頂けますでしょうか?
 
★今現在の記述(必要そうな部分のみです。)
const resp1 = await Promise.all([hantei(), addressGeo()]);
var time2 = moment().format('YYYY-MM-DDT00:00Z');
var results = resp1[0].records[0].DAY.value.filter(function(record){
                return (resp1[0].records[0].DAY.value.出勤時間.value === time2);
              });
 
★resp1[0]の中身
 
★エラー表記
Uncaught (in promise) TypeError: Cannot read property 'value' of undefined
→return (resp1[0].records[0].DAY.value.出勤時間.value === time2);
 
よろしくお願い致します。
0

2件のコメント

Avatar
村濱一樹

filterのcallbackに入る引数( function(record){}のrecord )は配列1個1個のものがはいるので、その中はテーブルの1行にあたりますね。なので

 

var filteredTable = record.サブテーブル.value.filter(function(tableRow) {
return tableRow.value.フィールドコード.value === 比較する値;
});


という形で、必要な行だけ抽出できます。なので、記述されているコードにあわせると下記のような感じでしょうか

var results = resp1[0].records[0].DAY.value.filter(function(tableRow){
  return tableRow.value.出勤時間.value === time2;
});

 

0
Avatar
金沢麻未

村濱様

ありがとうございます。

無事実現できました。

0
サインインしてコメントを残してください。