プログラミングBlog

アプリ開発サークル勉強会⑪ 開催日時 2021年3月13日(土) 7:00-9:00

本日もこちらの問題やりました!

Q46-48 https://gist.github.com/kenmori/1961ce0140dc3307a0e641c8dde6701d

配列の中に連想配列

配列の中に連想配列が定義されているパターン
このようなkey,value形式の値を取り出して配列に戻す。

var names = [{ name1: 'A', name2: 'B' }, { name3: 'C', name4: 'D' }];

まずはforEachで連想配列を取り出す。

names.forEach(function (name) {
    console.log(name);
});

結果:

{ name1: 'A', name2: 'B' }
{ name3: 'C', name4: 'D' }

次にkeyを連想配列に定義されているすべてのkeyを取り出す

names.forEach(function (name) {
    Object.keys(name).forEach(function (key) {
        console.log(key);
    });
});

結果:

name1
name2
name3
name4

後はこれらのkeyを使って連想配列の中のvalue値を取り出して配列に詰め込む。

var results = [];

names.forEach(function (name,) {
    Object.keys(name).forEach(function (key) {
        results.push(name[key]);
    });
});

console.log(results);

結果:

[ 'A', 'B', 'C', 'D' ]

参考サイト

JavaScript|配列とオブジェクト(連想配列)の組み合わせパターン - わくわくBank

some

numbersの中身が一つでも5以上だったらtrueを返す。
someを使わなかった場合と使った場合の比較。

 Someなし

変数numbers

var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

var result = function () {
    for (var number of numbers) {
        if (number === 5) {
            return number >= 5;
        };
    }
    return false;
}

console.log(result);

結果:

true

 Someあり

var result1 = numbers.some(function (number) {
    return number >= 5;
});

console.log(result1);

結果:

true

everyなし

numbersの中身がすべて5以上だったらtrueを返す。
everyを使わなかった場合と使った場合の比較。

everyなし

var result = function () {
    for (var number of numbers) {
        if (number >= 5) {
            return false;
        }
    }
    return true;
}

console.log(result());

結果:

false

every

var result1 = numbers.every(function (number) {
    return number >= 5;
});

console.log(result1);

結果:

false