🐿 for of文で配列から取得したデータを、再度配列に格納する【ソートさせたい】
作成日: 2022/01/11
1

沼にハマったのでメモ。

やりたいこと

タイトルの通り「for of文で配列から取得したデータを、再度配列に格納」したい。
その後、ソートさせたい。(ソートさせるには配列化しないといけない)

array.pushで配列に格納できるかと思いきや、
なぜか配列数が出力される。

const obj = [
    {
        amount: 3,
    },
    {
        amount: 2,
    },
    {
        amount: 4,
    }
];
const arr = [];
for(let a of obj) {
    arr.push(a.amount);
    console.log(arr);
}

結果

1
2
3

原因

console.log(arr)がfor文の中に入っていたため。

解決

以下で解決した。

const obj = [
    {
        amount: 3,
    },
    {
        amount: 2,
    },
    {
        amount: 4,
    }
];
const arr = [];
for(let a of obj) {
    arr.push(a.amount);
}
console.log(arr);

結果

[1, 2, 3]

ポイント

arrayはfor文の外で定義している
for文の外でも値は維持できる

勘違い

配列内のオブジェクトをソートするには、特定の値を取り出してソートしないといけないと思っていた。

[
]
名前 性別 年齢 居住区 料金
山田 男性 22 東京 10,000
鈴木 女性 24 埼玉 8,000
山本 男性 20 千葉 6,000

例えば、ここから年齢を取り出して、それを基準にソートする。
「でもどうやってやるんだ?」となった。
しかし、実際は値を取り出さなくてもオブジェクト丸ごとソートする方法があった。

・配列内のオブジェクトを、ある値を基準にして、丸ごとソートする
https://ticketnote.dev/ticket/PyEoE2vDKxMqmMQ2JJRn


事業会社にてコーダーをしています。制作は6年目。 インプットしたことをアウトプットしています。