カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

コールバック関数でスコープ外の変数を使う

配列の各要素に対して処理を行いたいとき、コールバック関数を使います。

コードの例を見ていきましょう。

$data = [ 1, 2, 3 ];

$data = array_map(function($i) {
    return $i * 2;
}, $data );

print_r($data);

出力結果

Array
(
    [0] => 2
    [1] => 4
    [2] => 6
)

次に、各要素に掛ける数値を外部で変数として宣言します。
それだけだとコールバック関数の中で使用することは出来ませんのでuseを使います。

$data = [ 1, 2, 3 ];
$n = 2;

$data = array_map(function($i) use ($n) {
    return $i * $n;
}, $data );

print_r($data);

同じ出力結果が得られます。

Array
(
    [0] => 2
    [1] => 4
    [2] => 6
)

他に2次元の連想配列に対して任意のデータを一括で追加することも出来ます。
続きを読む…»

1,549 views

配列内のオブジェクトから指定したプロパティを削除

配列化したオブジェクトの中から指定したプロパティだけを削除する方法。

fruits = [
    {
        name: "apple",
        color: "red",
        quantity: 3,
    },
    {
        name: "orange",
        color: "orange",
        quantity: 6,
    },
    {
        name: "grape",
        color: "purple",
        quantity: 10,
    }
];

ログを出力して中身を確認します。

console.log({fruits});

出力結果

{
  fruits: [
    { name: 'apple', color: 'red', quantity: 3 },
    { name: 'orange', color: 'orange', quantity: 6 },
    { name: 'grape', color: 'purple', quantity: 10 }
  ]
}

forEachdeleteを使ってquantityプロパティを削除します。

fruits.forEach(element => delete element.quantity);

ログを出力して中身を確認しましょう。

console.log({fruits});

出力結果

{
  fruits: [
    { name: 'apple', color: 'red' },
    { name: 'orange', color: 'orange' },
    { name: 'grape', color: 'purple' }
  ]
}

quantityプロパティだけが削除されました。

プロパティを追加する

先ほどとは逆に、配列化したオブジェクトにプロパティを追加してみましょう。

元のオブジェクト配列

fruits = [
    {
        name: "apple",
        color: "red",
    },
    {
        name: "orange",
        color: "orange",
    },
    {
        name: "grape",
        color: "purple",
    }
];

追加するオブジェクト配列

quantities = [
    {
        quantity: 3
    },
    {
        quantity: 6
    },
    {
        quantity: 10
    }
];

forEachObject.assignを使ってquantityプロパティを追加します。

fruits.forEach((element, index) => Object.assign(element, quantities[index]));

console.log({fruits});

出力結果

{
  fruits: [
    { name: 'apple', color: 'red', quantity: 3 },
    { name: 'orange', color: 'orange', quantity: 6 },
    { name: 'grape', color: 'purple', quantity: 10 }
  ]
}
1,776 views

PowerShellでハッシュ値を確認

Linuxにはmd5sum等、ハッシュ値を確認するコマンドがありますが、Windows PowerShellでは使えません。
その代わり、get-filehashがありますので、それを使いましょう。(PowerShell ver4以降)

> get-filehash <file>

結果

MD5などアルゴリズムを指定する場合

> get-filehash -algorithm md5 <file>

結果

1,403 views

VSCodeのソース管理でリポジトリの初期化が出来ない

VSCodeとGit for Windowsを使ってソース管理をしています。
新たに管理したいディレクトリがあったので、リポジトリを初期化しようとしてハマったのでその解決法を書いておきます。

環境
– Windows 10 64bit
– VSCode 1.68(1.67でも検証)
– Git for Windows 2.36.1.windows.1

管理したいディレクトリをVSCodeで開き、リポジトリを初期化しようしました。
すると、.gitディレクトリは作成されるものの、VSCodeの表示は「リポジトリを初期化」ボタンが表示されたままで、ソース管理が出来ません。

Git Bashにてコマンドでやってみよう
git initを実行

$ git init
Initialized empty Git repository in C:/***/.git/

.gitディレクトリは作成されました。
続いて、git add -Aを実行

$ git add -A
fatal: unsafe repository ('C:/***' is owned by someone else)
To add an exception for this directory, call:

        git config --global --add safe.directory C:/***

と言われ、リポジトリへの追加が出来ませんでした。
続きを読む…»

4,666 views

コンテンツを中央寄せする便利な方法

コンテンツをテキストは左揃えで中央寄せしたいとき、これまでラッパーとしてdiv等で囲み、flexを使ったり、幅を決めてmargin: 0 auto;を使ったりしていました。
しかし、もう少し簡単にできる方法があったのでご紹介します。

これまでのやり方例

<div>
    <ul>
        <li>Sea sit et duo</li>
        <li>Labore velit enim gubergren</li>
        <li>Duo kasd amet clita</li>
        <li>Eirmod takimata est possim</li>
        <li>Nobis sed sed justo</li>
        <li>Clita sit erat iriure</li>
    </ul>
</div>

ラッピングしたdivflexを設定

div {
    display: flex;
    justify-content: center;
}

gridでも同じようなレイアウトにできます。

div {
    display: grid;
    justify-content: center;
}

div等でラッピングせずにやる方法

<ul>
    <li>Sea sit et duo</li>
    <li>Labore velit enim gubergren</li>
    <li>Duo kasd amet clita</li>
    <li>Eirmod takimata est possim</li>
    <li>Nobis sed sed justo</li>
    <li>Clita sit erat iriure</li>
</ul>

ulをコンテンツの幅で表示するようにし、中央寄せにする

ul {
    max-inline-size: max-content;
    margin-inline: auto;
}

表示結果

IE以外のブラウザは対応しているようなので問題なく使用できると思います。

justify-content – CSS: カスケーディングスタイルシート | MDN

上下左右中央揃え

上下左右共に中央揃えしたいときはplace-contentを使います。

html, body {
    margin: 0;
    padding: 0;
    height: 100%;
}
div {
    display: grid;
    place-content: center;
    height: 100%;
}

表示結果

place-content – CSS: カスケーディングスタイルシート | MDN

435 views