Alexa ISP関連コード:購入済み商品リスト

Alexaのスキル内課金(ISP)スキルのコード考察。
inSkillProductリストをフィルタリングして購入済み商品のリスト(entitledProductList)を取得

function getAllEntitledProducts(inSkillProductList) {
  const entitledProductList = inSkillProductList.filter(record => record.entitled === 'ENTITLED');
  return entitledProductList;
}

買い切り型商品リスト(entitleProductsList)から、商品名発話可能リスト(SpeakableList)を返す

function getSpeakableListOfProducts(entitleProductsList) {
  const productNameList = entitleProductsList.map(item => item.name);
  let productListSpeech = productNameList.join(', '); 

cf. filter関数の使い方

var words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter(word => word.length > 6);
console.log(result);
# 条件を満たす要素を抽出する

cf. map関数の使い方

const array = [1,2,3,4,3,6,4,5];
const result = array.map(item => item ===3);
console.log(result);
# 全要素について結果を表示する

順番をシャッフルしたい時

数列の順番をシャッフルするプログラム。ビンゴゲーム等でランダムでありしかも重複無く番号を読み上げるプログラムを作る時に活用する。

while (a) {
var j = Math.floor( Math.random() * a );
var t = arr[--a];
arr[a] = arr[j];
arr[j] = t;
}

APIにアクセスして返ってきた情報を表示する

WEBページからAPIにアクセスして返ってきた情報を表示する。人工衛星は今どこ?のコードを参考に、基本の構成方法をまとめる。

# 表示する場所を確保する(HTML)
      latitude: <span id="lat"></span>°<br />
      longitude: <span id="lon"></span>°<br />

以下JavaScript。

# アクセス先
      const api_url = 'https://api.wheretheiss.at/v1/satellites/25544';
      async function getISS() {
# アクセスしてレスポンス情報(辞書構造)を格納する
        const response = await fetch(api_url);
# 不要なjsonの括弧を取り除く
        const data = await response.json();
# 必要な項目の情報だけを抜き取る
        const { latitude, longitude} = data;
# 抜き取った情報を指定した場所に表示する指示
        document.getElementById('lat').textContent = latitude.toFixed(2);
        document.getElementById('lon').textContent = longitude.toFixed(2);
            }
      getISS();
      setInterval(getISS, 1000);