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

JavaScriptで配列の値を合計する

JavaScriptにもPHPのarray_sumみたいな関数があったらな~とずっと思っていました。
ふとまた調べているとそれに近しい感じに出来るメソッドがあったのでご紹介します。

とりあえず配列を用意

const nums = [12, 23, 35, 41, 56, 64, 77];

関数を使った普通のやり方

const sum = function(nums) {
	let total = 0;
	for (let i = 0, len = nums.length; i < len; i++) total += nums[i];
	return total;
};

const total = sum(nums);

console.log({total});

ちなみに出力結果はこの通り

{ total: 308 }

そして調べていて発見したのがArray.reduceメソッドです。
書式:配列名.reduce( コールバック関数(結果の値, 要素の値), [初期値] )
初期値は省略可です。
続きを読む…»

8,937 views

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

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

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

$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,600 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,808 views

PowerShellでハッシュ値を確認

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

> get-filehash <file>

結果

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

> get-filehash -algorithm md5 <file>

結果

1,427 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,730 views