javascript set内の合計値を取得する
- 作成日 2022.11.06
- javascript
- javascript
javascriptで、set内の合計値を取得するサンプルコードを記述してます。「forEach」を使用すれば求めることが可能です。文字列が含まれている場合は、結果が変わるので、数値のみだけ処理するという条件を入れることもできます。
環境
- OS windows11 pro 64bit
- Apache 2.4.43
- ブラウザ chrome 107.0.5304.88
合計値を取得する
合計値を取得するには「set」に「forEach」を使用して各値を加算していくことで可能です。
const s1 = new Set([1, 2, 3, 4, 5]);
let sum = 0;
s1.forEach(function(n){return sum += n;});
console.log(sum); // 15
実行結果
文字列が含まれている場合もケアするのであれば、数値判定処理を追加します。
const s1 = new Set([1, 2, 3, '1', 4, 5]);
let sum = 0;
s1.forEach(function(n){ if( Number.isFinite(n) ) return sum += n ;});
console.log(sum); // 15
ちなみに、配列でも同様の結果が得られます。
const arr = [1, 2, 3, 4, 5];
let sum = 0;
arr.forEach(function(n){return sum += n;});
console.log(sum); // 15
パフォーマンス比較
ちなみ配列とSETを使用して、連続する配列「1,2,…100」を使用してパフォーマンスを比較したところ配列の方がパファーマンスは良さそうでした。
<script>
// 実行回数
const times = 1_000_000;
// 空白を埋めるだけの関数
function spacePadding(val, n = 8) {
for (; val.length < n; val += ' ');
return val;
}
// 計測結果を表示
const benchmark = (name, start, end) => {
let report = (end - start).toPrecision(3);
// 表示を見やすくするため関数名に空白を埋める
name = spacePadding(name)
console.log(`実行回数:${times}回 関数名:${name} 実行時間:${report}(ms)`);
}
// 配列 100個の連続した値
const arr = Array.apply(null, { length: 100 }).map((v, index) => index);
// set
const s = new Set(arr);
// カウントする文字
let sum = 0;
// 計測
start = performance.now();
for (let i = 0; i < times; ++i) {
sum = 0;
arr.forEach(function (n) { return sum += n; });
}
end = performance.now();
benchmark('arr', start, end);
// 計測
start = performance.now();
for (let i = 0; i < times; ++i) {
sum = 0;
s.forEach(function (n) { return sum += n; });
}
end = performance.now();
benchmark('set', start, end);
</script>
計測結果
実行回数:1000000回 関数名:arr 実行時間:207(ms)
実行回数:1000000回 関数名:set 実行時間:870(ms)
-
前の記事
Redis redis-cliでメモリの使用状態をリアルタイムで確認する 2022.11.06
-
次の記事
PowerShellを管理者で起動するショートカットキー 2022.11.06
コメントを書く